将字符串从外部文件转换为Python字典

时间:2014-01-20 12:55:38

标签: string python-2.7 dictionary

我环顾四周,但我还没找到解决办法。我有外部TXT文件,其中包含以逗号分隔的字符串,每个“项目”都在新行上:

item1: value1
item2: value2

等。你明白了。

我正在创建与字典一起使用的脚本,我需要将文件转换为Python字典。我还是个新手,所以我有点失落。

我试过这个,我在这里找到String to dictionary

  

用于string.split(':')中的键的dict((key,None))

但我无法弄清楚如何用代表键值的sth替换'None'。我确实尝试过dict((key,value))但是'value'无法识别。

2 个答案:

答案 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

    
  

这对我来说似乎更干净,更容易理解。