我得到的输出字符串格式如下:
w = "name: some name|age: 23|street: some address|favorite meal: meal|name: some other name|age: 15|street: some other address|pet: dog|name: <and so on..>"
问题是这个字符串不是完全可预测的,&#34; name&#34;之后的信息。直到另一个&#34;名称&#34;属于给定的人和&#34;键&#34;对于那个信息可能不止一个单词(虽然我认为我可以估计/预测所有&#34;关键词&#34;)
有没有办法将它安排到python字典中? (我想这需要字典和另一个字典作为它的值...但是如何从字符串中提取所有信息并将相关数据保存在一起(字符串在一个人中大约10人左右)
答案 0 :(得分:1)
只需将每个'name'键用作标记:
[{'name': 'some name', 'age': '23', 'street': 'some address', 'favorite meal': 'meal'}, {'name': 'some other name', 'age': '15', 'street': 'some other address', 'pet': 'dog'}]
输出:
{{1}}
答案 1 :(得分:1)
你可以试试这个:
import re
w = "name: some name|age: 23|street: some address|favorite meal: meal|name: some other name|age: 15|street: some other address|pet: dog|"
new_w = re.split('(?<=\|)name:\s|(?<=^)name:\s', w)
new_data = {i.split('|')[0]:{b[:b.index(':')]:b[b.index(':')+2:] for b in filter(lambda x:x, i.split('|')[1:])} for i in filter(lambda x:x, new_w)}
输出:
{'some name': {'favorite meal': 'meal', 'age': '23', 'street': 'some address'}, 'some other name': {'pet': 'dog', 'age': '15', 'street': 'some other address'}}