我有以下的文本塊:解析冒號分隔數據
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'] }
等
預先感謝您的幫助。
'生活在電視'部分重要嗎?你沒有在你想要的輸出中提到它。 –
這種方法如何:將新行存儲爲'x',分步遍歷每行,並用'':''分隔。如果第二部分不是空的,則將這兩對作爲鍵和值添加到字典中,並從'x'中彈出該行;接下來,您將只剩下一個鍵列表(帶有':'),而其他所有內容都會列在該鍵的列表中。運行修剪過的'x'並將剩下的添加到字典中。 –
爲什麼「住在電視機裏」的規則最終不在列表中?或者,「農民法案」呢? – abarnert