python разделение строки

Вот имеется код:

inp = input()
inp = inp.split()

При вводе например:

newobj = obj(<параметры>)
или
newobj.<параметр> = 5

python должен разделить в первом случае

mass = ['newobj', '=', 'obj', '<параметры>']

во втором:

mass = ['newobj', '.', '<параметр>', '=', 5]

Только не спрашивайте, зачем мне это нужно)


Ответы (2 шт):

Автор решения: dresqd

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

def StpdSplit(inp: str) ->list:
    outlist = []
    if "." in inp:
        outlist.append(inp[0:inp.find(".")])
        outlist.append(inp[inp.find(".")])
        inp = inp[inp.find(".")+1:]
        outlist.append(inp[0:inp.find(" = ")])
        outlist.append("=")
        inp = inp[inp.find(" = ") + 3:]
        outlist.append(inp)
        return outlist
    else:
        outlist.append(inp[0:inp.find(" = ")])
        outlist.append("=")
        inp = inp[inp.find(" = ") + 3:]
        outlist.append(inp[0:inp.find("(")])
        inp = inp[inp.find("(") + 1:]
        outlist.append(inp[0:inp.find(")")])
        return outlist
→ Ссылка
Автор решения: Amgarak

Если правильно уловил суть задачи, то можно попробовать следующие:

import re

def split_input(input_str):
    pattern = r'\.|\=|<.*?>|\w+'
    result = re.findall(pattern, input_str)
    for i in range(len(result)):
        try:
            result[i] = int(result[i])
        except ValueError:
            pass
    return result

# Строки из примера
input_1 = "newobj = obj(<параметры>)"
result = split_input(input_1)
print(result)

input_2 = "newobj.<параметр> = 5"
result_2 = split_input(input_2)
print(result_2)

Вывод:

['newobj', '=', 'obj', '<параметры>']
['newobj', '.', '<параметр>', '=', 5]

[Program finished]

Функция findall

→ Ссылка