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

2 投票
4 回答
7128 浏览
提问于 2025-04-16 14:38

我有一个叫“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])

这可能不是完全准确,但应该能给你一个起点。为了简洁起见,这里没有包含错误处理的部分。

撰写回答