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 に答える