我有一个.txt文件,其中包含以下行:
23;Pablo;SanJose
45;Rose;Makati
Run Code Online (Sandbox Code Playgroud)
我有这个程序:
file = open("C:/Users/renato/Desktop/HTML Files/myfile2.txt")
def query(id):
for line in file:
table = {}
(table["ID"],table["name"],table["city"]) = line.split(";")
if id == int(table["ID"]):
file.close()
return table
else:
file.close()
return {}
id = int(input("Enter the ID of the user: "))
table2 = query(id)
print("ID: "+table2["ID"])
print("Name: "+table2["name"])
print("City: "+table2["city"])
Run Code Online (Sandbox Code Playgroud)
所以正在发生的事情(据我所知)是:
文件打开table创建一个调用的哈希,文件的每一行被分成3个键/值.如果id用户输入的内容与键的值匹配ID,则关闭文件并返回整个哈希值.
然后,我table2在table哈希上分配值,我正在尝试打印它中的值.
当我运行它时,我得到以下内容:
Traceback (most recent call last):
File "C:/Users/renato/Desktop/HTML Files/Python/hash2.py", line 17, in <module>
print("ID: "+table2["ID"])
KeyError: 'ID'
Run Code Online (Sandbox Code Playgroud)
似乎它没有识别var ID上的关键字table2.我还尝试在执行函数之前table2通过put 声明为哈希table2 = {},但它会继续显示错误消息.
如何将返回的哈希值分配给变量,以便我可以使用它们打印它们keys?
Gab*_*abe 11
发生的事情是你在文件的第一行与你正在寻找的id不匹配后立即返回.你必须这样做:
def query(id):
for line in file:
table = {}
(table["ID"],table["name"],table["city"]) = line.split(";")
if id == int(table["ID"]):
file.close()
return table
# ID not found; close file and return empty dict
file.close()
return {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71166 次 |
| 最近记录: |