将值列表从txt文件转换为字典

时间:2011-03-29 12:09:04

标签: python list file-io dictionary readfile

所以我有这个名为“Students.txt”的txt文件,我想定义一个名为load(student)的函数 所以我有这个代码:

def load(student):
      body

我不太清楚要为代码体写什么,以便它读取文件并将文件中的值作为字典返回。我知道它会像readlines() 无论如何,文件students.txt看起来像这样:

P883, Michael Smith, 1991
L672, Jane Collins, 1992
(added)L322, Randy Green, 1992
H732, Justin Wood, 1995(added)
^key  ^name        ^year of birth 

该函数必须返回如下字典:

{'P883': ('Michael Smith',1991),
'(key)':('name','year')}

我设法通过反复试验返回值但是我不能创建新行并继续返回\ n。

=============== 这个问题已得到解答,我使用下面的代码,它完美地工作但是当txt文件的值中有空格时...(参见附加部分)它不再起作用并且给出错误说列表索引超出范围

4 个答案:

答案 0 :(得分:3)

看起来像一个CSV文件。您可以使用csv模块:

import csv
studentReader = csv.reader(open('Students.txt', 'rb'), delimiter=',', skipinitialspace=True)
d = dict()
for row in studentReader:
    d[row[0]] = tuple(row[1:])

这不会给你一年的整数,你必须自己改变它:

for row in studentReader:
    d[row[0]] = tuple(row[1], int(row[2]))

答案 1 :(得分:2)

这样的事情应该这样做,我想:

students = {}

infile = open("students.txt")
for line in infile:
  line = line.strip()
  parts = [p.strip() for p in line.split(",")]
  students[parts[0]] = (parts[1], parts[2])

这可能不是100%,但应该给你一个起点。为简洁起见,省略了错误处理。

答案 2 :(得分:1)

def load(students_file):
    result = {}
    for line in students_file:
        key, name, year_of_birth = [x.strip() for x in line.split(",")]
        result[key] = (name, year_of_birth)
    return result

答案 3 :(得分:0)

我会在python中使用pickle模块将您的数据保存为dict,这样您就可以通过取消它来轻松加载它。或者,您可以这样做:

d = {}
with open('Students.txt', 'r') as f:
  for line in f:
    tmp = line.strip().split(',')
    d[tmp[0]] = tuple(tmp[1],tmp[2])