У меня есть следующий текст: кусокРазбор двоеточиями данных
string = """
apples: 20
oranges: 30
ripe: yes
farmers:
elmer fudd
lives in tv
farmer ted
lives close
farmer bill
lives far
selling: yes
veggies:
carrots
potatoes
"""
Я пытаюсь найти хороший регулярное выражение, которое позволит мне разобрать ключевые ценности. Я могу захватить значения один ключ линии что-то вроде:
'(.+?):\s(.+?)\n'
Однако проблема возникает, когда я ударил фермеров, или овощи.
Используя повторно флаги, мне нужно сделать что-то вроде:
re.findall('(.+?):\s(.+?)\n', string, re.S),
Однако я с чертовски времени, захватывая все ценности, связанные с фермерами.
После каждого значения появляется новая строка, а также вкладка или серия вкладок перед значениями, когда они являются многострочными.
и цель состоит в том, чтобы иметь что-то вроде:
{ 'apples': 20, 'farmers': ['elmer fudd', 'farmer ted'] }
т.д.
Заранее спасибо за вашу помощь.
Является ли значительная часть «жизни в ТВ»? Вы не упоминали об этом в своем желаемом выходе. –
Как насчет этого подхода: split by newlines хранится как 'x', пройдите через каждую строку и разделите его на' ':' '. Если вторая часть не пуста, добавьте две пары в качестве ключа и значения в словарь и введите строку из 'x'; далее вам останется список только ключей (с ':'), и все остальное будет в списке для этого ключа. Пройдите через обрезанный 'x' и добавьте оставшееся в словарь. –
Какое правило почему '' живет в tv'' не входит в список? Или '' счет фермера '', если на то пошло? – abarnert