with open("zipcodes.txt", "r") as ins:
array = []
for line in ins:
array.append(line.split(","))
print(array)
userInput = input("Please enter the codes your looking for: ")
print(array.index(userInput))
首先,这是一个学校作业,所以我不是在寻找一个完整的答案,我正在寻找一个方向。我的任务是将文本文件加载到列表中,将每行分开。 (文本文件是每个美国邮政编码,邮政编码所在的城市,以及状态EX.93312,BAKERSFIELD,CA)。一旦创建了列表,程序需要做的下一件事就是接收用户邮政编码,然后打印出邮政编码,城市和州。这是我到目前为止的代码,我完全不知道该怎么做。我再次寻找一个完整的答案,只是一个方向。有时候我会想念简单的解决方案,只需要有人说出一些可以让我点击它的东西。感谢您的时间和任何信息或帮助。
答案 0 :(得分:2)
array.index()不返回元素本身;它返回它的索引。例如,如果'93267'是列表中的第二个元素,并且您调用了array.index('93267'),那么您将获得'1'。尝试创建一个包含索引的变量,然后在索引处打印的任何内容:
o.SetValue(PlainTextProperty, text)
然而,您可能会遇到这样的问题,因为在您的代码中,您用逗号分隔每一行,并且在您的描述中,您的邮政编码,城市和州都用逗号分隔。我不完全确定你的原始文本文件是什么样的,所以我可能错了,但要注意它可能会导致一些问题。
希望这有帮助;如果你遇到更多问题,请随时说出来。祝你的学校项目好运!
答案 1 :(得分:0)
编辑:此版本不使用字典,而是使用列表。
此代码是您可以采用的一种快速示例。文件zipcodes.txt
仅包含您在说明中提供的单个示例。
MATCH = """
Zipcode: {}
City: {}
State: {}
"""
with open('zipcodes.txt', 'r') as f:
zipcodes = [line.rstrip().split(',') for line in f]
while True:
user_zipcode = input("Enter zipcode (or (Q)uit): ")
if user_zipcode.lower() == 'q':
break
for zipcode, city, state in zipcodes:
if user_zipcode == zipcode:
print(MATCH.format(zipcode, city, state))
break
else:
print("\nNo match for zipcode: '{}'\n".format(user_zipcode))
控制台:
Enter zipcode (or (Q)uit): 12345
No match for zipcode: '12345'
Enter zipcode (or (Q)uit): 93312
Zipcode: 93312
City: BAKERSFIELD
State: CA
Enter zipcode (or (Q)uit): q
答案 2 :(得分:0)
如果我理解正确,array
的结构最终会像这样结束:
[[' ZIPCODE',' CITY',' STATE'],[' ZIPCODE',' CITY' ;,' STATE'],...]
和userInput
将包含一个代表ZIPCODE的字符串。
鉴于array
的结构,对于array
(每个子列表)中的每个条目,条目中的第一个元素(条目[0])将是ZIPCODE。
您可以遍历array
中的每个条目,并检查该条目的第一个元素是否与userInput
匹配。
如果是,您可以打印该条目。
注意:要了解您从print语句中收到错误的原因,请查看list methods的说明,即index
方法。