我有一个看起来像这样的字符串:
"Name1=Value1;Name2=Value2;Name3=Value3"
Python中是否有内置类/函数将采用该字符串并构造一个字典,就像我已经做到了那样:
dict = { "Name1": "Value1", "Name2": "Value2", "Name3": "Value3" }
我浏览了可用的模块,但似乎找不到任何匹配的模块。
谢谢,我确实知道如何自己编写相关代码,但是由于此类较小的解决方案通常是等待发生的雷区(即有人写道:Name1 =’Value1 = 2’;)等,因此我通常更喜欢使用测试功能。
那我自己去做
没有内置功能,但是您可以通过生成器理解相当简单地完成此操作:
s= "Name1=Value1;Name2=Value2;Name3=Value3" dict(item.split("=") for item in s.split(";"))
[编辑] 在更新中,您指示您可能需要处理报价。这确实使事情复杂化,具体取决于您要寻找的确切格式是什么(接受什么报价字符,什么是转义字符等)。您可能需要查看csv模块,以查看它是否可以覆盖您的格式。这是一个示例:(请注意,此示例的API有点笨拙,因为CSV旨在迭代一系列记录,因此,我正在调用.next()来仅查看第一行。满足您的需求):
>>> s = "Name1='Value=2';Name2=Value2;Name3=Value3" >>> dict(csv.reader([item], delimiter='=', quotechar="'").next() for item in csv.reader([s], delimiter=';', quotechar="'").next()) {'Name2': 'Value2', 'Name3': 'Value3', 'Name1': 'Value1=2'}
但是,根据格式的确切结构,您可能需要编写自己的简单解析器。