从文件创建字典并获取

2024-04-24 20:13:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到一个字典,其中病人ID作为键和名称作为值,但是,需要找到姓和名,并结合他们作为值,但我不断得到这个错误

fhand = open('PatientsNames.txt')
fhand.readline()

patientinfo = dict()

for line in fhand:

    ids=line[:8]
    if ids not in patientinfo:
        patientinfo=[ids]
    endlastname = line[' ':8]
    lastname = line[8:endlastname]
    firstname = line[endlastname+1:]
    patientinfo[ids]=lastname + ',' + firstname
Traceback (most recent call last):
  File "C:/Users/alexs/PycharmProjects/Hwk13_Application2_STARTER/Hwk13a_STARTER.py", line 23, in <module>
    endlastname = line[' ':8]
TypeError: slice indices must be integers or None or have an __index__ method

Process finished with exit code 1

Tags: orin名称idids字典错误line
1条回答
网友
1楼 · 发布于 2024-04-24 20:13:12

我假设您在编写endlastname = line[' ':8]时,试图获取索引8之后出现的第一个' '的索引。在这种情况下,我们可以将您使用的行替换为:

endlastname = line.find(' ', 8)

至于在字典里写新词条,那应该在一行中完成。用于新条目的行patientinfo=[ids]正在用只包含ids值的列表替换字典。相反,我们将获取idlastname/firstname值,然后在一行中填充字典:

patientinfo[id] = lastname + ', ' + firstname

综合起来:

patientinfo = {}
lines = open('PatientsNames.txt').read().splitlines()
for line in lines:
    id=line[:8]
    if id not in patientinfo:
        endlastname = line.find(' ', 8)
        lastname = line[8:endlastname]
        firstname = line[endlastname+1:]
        patientinfo[id] = lastname + ', ' + firstname

在您的例子中,没有必要使用str.find()函数,因为我们可以使用str.split()line拆分为' '

...
    if id not in patientinfo:
        patientinfo[id] = ', '.join(line[8:].split())

请注意,您不需要显式地将要拆分的字符(' ')放在split()函数中,因为这是split()的默认值

相关问题 更多 >