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]