Чтобы преобразовать строковый ввод во вложенный кортеж в 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. Вы можете выбрать тот, который лучше всего соответствует вашим требованиям.