从文件到字典

时间:2012-10-21 18:51:29

标签: python dictionary

我正在尝试将文件放入字典中。 该文件是这样的:

1 some something something
2 go goforit doit 
17 non so 

我正在尝试这样的事情但是不起作用:

def filetodic():
 d={}
 with open("file.txt") as f:
  for line in f:
   key  = line.split()
 return d
print filetodic()

编辑:字典中每个字段的键必须是看起来是文件中每行中第一个元素的数字。

3 个答案:

答案 0 :(得分:3)

试试这个:

def filetodic():
    d={}
    f = open("file.txt")
    for line in f:
        key  = line.split()
        d[key[0]]= ' '.join(key[1:])
    return d

print filetodic()

答案 1 :(得分:3)

由于您需要{1:"some something something", 2:"go goforit doit"}(如评论中所示),请尝试

k, v = line.rstrip().split(None, 1)
d[int(k)] = v

请注意,这会保留值本身的间距(例如1 abc  def变为1:'abc  def'而不是1:'abc def'。)

答案 2 :(得分:0)

使用正则表达式:

rg = re.compile(r'(?P<k>[0-9]+)[ \t]+(?P<v>[A-Za-z\t .]+)')

def filetodic(fileo):
    return {int(k):v.strip() for k,v in [rg.match(line).groups() for line in fileo]}

print filetodic(open("test.txt"))