Методы преобразования строкового ввода во вложенный кортеж в Python

Чтобы преобразовать строковый ввод во вложенный кортеж в Python, вы можете использовать несколько методов. Вот несколько примеров:

Метод 1: использование функции ast.literal_eval()

import ast
def convert_string_to_nested_tuple(input_string):
    nested_tuple = ast.literal_eval(input_string)
    return nested_tuple
input_string = "(1, (2, 3), (4, (5, 6)))"
nested_tuple = convert_string_to_nested_tuple(input_string)
print(nested_tuple)

Метод 2. Использование рекурсии

def convert_string_to_nested_tuple(input_string):
    stack = []
    current_tuple = ()
    for char in input_string:
        if char == '(':
            stack.append(current_tuple)
            current_tuple = ()
        elif char == ')':
            if stack:
                parent_tuple = stack.pop()
                parent_tuple += (current_tuple,)
                current_tuple = parent_tuple
        else:
            current_tuple += (int(char),)
    return current_tuple
input_string = "(1, (2, 3), (4, (5, 6)))"
nested_tuple = convert_string_to_nested_tuple(input_string)
print(nested_tuple)

Метод 3. Использование регулярных выражений

import re
def convert_string_to_nested_tuple(input_string):
    pattern = r"\d+|[(]|[)]"
    tokens = re.findall(pattern, input_string)
    stack = []
    current_tuple = ()
    for token in tokens:
        if token == '(':
            stack.append(current_tuple)
            current_tuple = ()
        elif token == ')':
            if stack:
                parent_tuple = stack.pop()
                parent_tuple += (current_tuple,)
                current_tuple = parent_tuple
        else:
            current_tuple += (int(token),)
    return current_tuple
input_string = "(1, (2, 3), (4, (5, 6)))"
nested_tuple = convert_string_to_nested_tuple(input_string)
print(nested_tuple)

Это три разных метода преобразования строкового ввода во вложенный кортеж в Python. Вы можете выбрать тот, который лучше всего соответствует вашим требованиям.