我有一个文本文件的格式(好吧,它是少得多的结构,但我需要的部分遵循下面的想法):
[ThisShouldBeAKey]
Value1=yes
Value2=no
Value3=fancywords
Value4=numbers
[ThisShouldBeAnotherKey]
Value2=true
Value3=333
Value5=qqq
我想把这个文件转换成字典,这样我就可以很容易地比较某些键的某些值。例如,检索[Key 1]和[Key 100]的Value 8和Value 9。
我想我可以通过简单地迭代[key]的文本转储来检索Value 8和Value 9,并使用startswith()或其他字符串函数来检索我想要的内容。因此,尽管你可以(理想地)创建一个嵌套字典,但我不认为我必须这样做。
然而,我甚至连简单地获取[Key]:Value 1Value 2 Value 3AllthevaluesTextdump的字典都有困难。我自己尝试过一些方法,我尝试过这里的建议(In Python, how do I read a file into a dictionary with multiple line entries?)和对它的修改,但我总是遇到for循环、while循环的问题,或者文件没有被正确读取。
您建议如何执行此操作?
先谢谢你!
2条答案
按热度按时间erhoui1w1#
在每一行上循环并检测起始方括号以开始一个新组。使用split获取其他行上的key和value以更新当前组:
rekjcdws2#
您可以只使用
<dict>.setdefault
和<str>.split
迭代行对于示例代码段,
result
将如下所示您还可以使用参考字典(如下面的
kwList
)和ast.literal_eval
来进一步解析值。要使用
try_eval
,请将我建议的解决方案中的if '=' in l:..
块更改为那么
result
看起来就像[Note
ThisShouldBeAnotherKey
的Value2
和Value3
的变化。]