@leonidpetrosian

Как вычленить подстроку из строки?

Добрый день!
Есть строка по типу «fName: Vasya, sName: Petrov, Desc: worker, fName: Dina, sName: Egorova, Desc: engineer, worker”
В общем случае её можно представить, как показано на рисунке:
5d5e214bb0ddc311744527.jpeg
Проблема в том, что нельзя использовать ‘,’ в качестве разделителя, тк значение(описание) так же может содержать ‘,’
Подскажите, как более правильно будет разделить данную строку на подстроки «fName: Vasya», «sName: Petrov», «Desc: worker», ...?
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
@Taus
Можно с помощью регулярных выражений с positive lookahead.
s = 'fName: Vasya, sName: Petrov, Desc: worker, fName: Dina, sName: Egorova, Desc: engineer, worker'
for match in re.finditer(r'(\w+:[^:]+)(?=(?:,\s*\b\w+|$))', s):
    print(match.group())
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Возможно так?:
>>> str1 = "fName: Vasya, sName: Petrov, Desc: worker, fName: Dina, sName: Egorova, Desc: engineer, worker"
>>> for im in zip(re.findall(r'(\w+):', str1), [x for x in re.split(r'\w+:', str1) if x]):print(im)
...
('fName', ' Vasya, ')
('sName', ' Petrov, ')
('Desc', ' worker, ')
('fName', ' Dina, ')
('sName', ' Egorova, ')
('Desc', ' engineer, worker')

либо вот ваши подстроки:
>>> for im in zip(re.findall(r'(\w+:)', str1), [x.strip() for x in re.split(r'\w+:', str1) if x]):print(' '.join(im))
...
fName: Vasya,
sName: Petrov,
Desc: worker,
fName: Dina,
sName: Egorova,
Desc: engineer, worker
Ответ написан
Комментировать
@lightmanLP
Задушил питона
Сплитайте через , и проверяйте на содержание :
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы