将txt文件中的值列表转换为字典
我有一个叫“Students.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。
=============== 这个问题已经有人回答过了,我使用了以下代码,效果很好。但是当文本文件中的值有空格时(见添加的部分),它就不再工作了,并且出现了“列表索引超出范围”的错误。
4 个回答
1
在编程中,有时候我们会遇到一些问题,可能会让我们感到困惑。比如说,当我们在写代码的时候,可能会出现错误或者不按预期工作。这时候,我们可以去一些技术论坛,比如StackOverflow,去寻找解决方案或者向其他人请教。
在这些论坛上,很多人会分享他们的经验和解决方法,帮助我们更好地理解问题的根源。通过阅读这些讨论,我们可以学到很多实用的技巧和知识,这对我们提升编程能力是非常有帮助的。
总之,遇到问题不要害怕,去寻求帮助是很正常的。通过与他人的交流,我们可以更快地找到解决办法,进而提高自己的编程水平。
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
看起来像是一个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]))
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])
这可能不是完全准确,但应该能给你一个起点。为了简洁起见,这里没有包含错误处理的部分。