0

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

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()

编辑:字典中每个字段的键都需要是文件中每一行中出现的第一个元素的数字。

4

3 回答 3

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()
于 2012-10-21T18:57:35.213 回答
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')。

于 2012-10-21T19:10:14.290 回答
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"))
于 2012-10-21T19:15:24.643 回答