Python-将字符串拆分为字典

Python-将字符串拆分为字典,python,dictionary,split,tuples,Python,Dictionary,Split,Tuples,我的情况如下。 我有一张这样的“名单” Text1 Text2: value1 Text3: Text4: Text5: value2 ... { Text2:value1,Text3:'',Text4:'',Text5:value2 } 现在我想将文本拆分成一个具有键值对的字典 我用这条线试过了 sp = dict(s.split(':') for s in list.split('\n') if len(s) > 1 and s.count(':') > 0) 在没有像Te

我的情况如下。 我有一张这样的“名单”

Text1
Text2: value1
Text3:
Text4:
Text5: value2
...
{ Text2:value1,Text3:'',Text4:'',Text5:value2 }
现在我想将文本拆分成一个具有键值对的字典

我用这条线试过了

sp = dict(s.split(':') for s in list.split('\n') if len(s) > 1 and s.count(':') > 0)
在没有像Text3和Text4中那样的值之前,这非常有效

我的最后一本字典应该是这样的

Text1
Text2: value1
Text3:
Text4:
Text5: value2
...
{ Text2:value1,Text3:'',Text4:'',Text5:value2 }

Text1应该被跳过-但是Text3和Text4我需要在字典中,如果值为空也是如此。

对于您的情况
键:http://xyz.com
您必须在第一次匹配后使用
s.split(':',1))
:

输出:

{'Text2': 'value1', 'Text3': '', 'Text4': '', 'Text5': 'value2', 'Key': 'http:// xyz .com'}

因为这个问题,我只能在评论的帮助下发现,我可以用这种方式解决这个问题

my_str = """Text1
Text2: value1
Text3:
Text4:
Text5: value2
Text6:http: // something
"""
问题是,由于值字段中的WebAddress,最后一行被分成了3部分

sp = dict(s.split(':') for s in my_str.split('\n') if len(s) > 1 and s.count(':') == 1)

也许有更好的方法,但我检查了拆分字符是否为“:“仅占1次-因为这样我肯定会得到一对,我可以插入字典:)

我得到了您提到的预期输出。它跳过了文本1是的,我也得到了您预期的输出。您的代码在python2.7和3.5中工作。不要对变量使用
list
关键字。您可以在sValueError:dictionary update sequence元素#75的长度为3;2是必需的-我使用python 3.6I发现了导致此问题的问题-我有一个元素的键:http://xyz.com这将被分成3个部分-因此,我如何可以用2个以上的元素跳过这些行?您编辑了消息,而我正在编写我找到的答案-感谢您的支持!