Как распарсить сложную строку?
Есть строка, которую нужно распарсить:
from typing import List
def parse_str(st:str) -> List[str]:
return # смотри пример
Пример работы функции:
st = 'op:dsafllksaf cl:lsdfjlal;sdf op:laksdjfljsa op: alsdfjl;ksadjf;l cl:asdflkj'
parse_str(st)
>>> ['op:dsafllksaf','cl:lsdfjlal;sdf', 'op:laksdjfljsa',
'op: alsdfjl;ksadjf;l', 'cl:asdflkj']
Единственное до чего я дошел - это распарсить его используя регулярки re.split('op|cl', st). Но это возвращает не то, что нужно.
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Рерулярке вполне такое взять под силу.
import re
def parse_str(st):
return re.findall(r"(.+?:.+?)(?:\s+|$)", st)
Или через тот же re.split():
def parse_str(st):
return re.split(r"(?<!:)\s+(?!:)", st)
['op:dsafllksaf',
'cl:lsdfjlal;sdf',
'op:laksdjfljsa',
'op: alsdfjl;ksadjf;l',
'cl:asdflkj']