我有下面的代码,想把一个字符串从一个文件变成一个字典(要读入和操作)。在下面的代码中,在执行时,它会出现一个错误:“people is not defined”。我没有正确地定义它还是语法错误?这是Python 3
def verifylogin():
people={}
with open("moosebook.txt","r") as f:
for line in f:
items=line.split(",")
person={}
person['username'] =items[0]
person['password']=items[1]
person['Gender']=items[2]
person['Career']=items[3]
people[items[0]]=person
print(person[0])
我不知道你对剧本的最终意图是什么,但下面的内容可能会有所帮助。Python有一个内置的
CSV
模块,它可以自动将文件的每一行作为列的列表读入。在此外,它还有一个CSV ^{} 变体,可能对您更有用。这将获取CSV文件中的第一行,并在读入时使用头为每一行自动创建一个字典。在
如果文件不包含标题行,则可以提供合适的
fieldnames
列表。你不需要用这个功能来创建你的字典。在下面展示了如何创建
people
字典。键是每行的username
。我将username
键从person
中删除,因为它成为people
使用的密钥:因此,如果
^{pr2}$moosebook.txt
包含以下条目:您将看到以下输出:
如果文件没有标题行,则可以更改以下行:
正如您从注释中看到的那样,缩进是错误的,但是我想这是因为粘贴在这里,而不是实际代码中的问题。在
但你的代码中还有两个问题。}。因此,您可以使用
print(person[0])
在执行时将失败,因为0
不是字典的有效键。代码中唯一有效的键是username
、password
、Gender
和{person
或people[items[0]]
。然后可以使用splitlines
来避免数据中的换行。在相关问题 更多 >
编程相关推荐