我环顾四周,但我还没找到解决办法。我有外部TXT文件,其中包含以逗号分隔的字符串,每个“项目”都在新行上:
item1: value1
item2: value2
等。你明白了。
我正在创建与字典一起使用的脚本,我需要将文件转换为Python字典。我还是个新手,所以我有点失落。
我试过这个,我在这里找到String to dictionary:
用于string.split(':')中的键的dict((key,None))
但我无法弄清楚如何用代表键值的sth替换'None'。我确实尝试过dict((key,value))但是'value'无法识别。
答案 0 :(得分:0)
你可以这样解决:
dict((key, value) for key, value in [string.split(': ')])
请注意,如果字符串中有多个': '
,则会失败。
这种代码的和平如下:
>>> string = 'hello: world'
>>> string.split(': ')
['hello', 'world']
>>> a, b = string.split(': ')
>>> a
'hello'
>>> b
'world'
这些值将是字符串。如果它们应该是例如整数,请使用(key, int(value))
。如果没有整数值,这也不是故障安全的。
备注:从Python 2.7开始标记您的问题,您可以使用字典理解。这有点清洁:
{key: value for key, value in [string.split(': ')]}
然而,这会给你很多大小为1的词典。我想你需要这样的东西:
{key: value for line in fileobject.readlines() for key, value in [line.split(': ')]}
您也可以直接使用拆分:
dict(tuple(string.split(': ')) for string in fileobject.readlines())
答案 1 :(得分:0)
我在#Python(FreeNode)周围问过这个问题,并且似乎有更多“整洁”的解决方案。
fileobject = open('text.txt','r')
fdict = {}
for fileobject.readlines()中的行:
表示[line.split(':')]中的键,值:
fdict [key] = value
这对我来说似乎更干净,更容易理解。