用程序读取文件 City.txt 中的信息(以UTF-8-SIG 编码读取)当用户输入城市名(支持模糊查找,即不区分大小写,而且可以只输入部分字符串)后,显示该城市的相关信息;继续输入,继续查找;输入"Quit()",退出查找

用程序读取文件 City.txt 中的信息(以UTF-8-SIG 编码读取)当用户输入城市名(支持模糊查找,即不区分大小写,而且可以只输入部分字符串)后,显示该城市的相关信息;继续输入,继续查找;输入"Quit()",退出查找

以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
为了完成这个需求,你需要编写一个Python程序来读取City.txt文件并查找用户输入的城市信息。由于需要支持模糊查找和不区分大小写,你可以使用Python内置的re模块进行正则表达式匹配。以下是一个可能的实现:
import re
def read_city_info_from_file(filename):
# 以UTF-8-SIG编码读取文件
with open(filename, 'r', encoding='utf-8-sig') as file:
city_info = {}
for line in file:
city_name, population = line.strip().split('\t') # 根据Tab分隔信息,这里假设文件名是正确的,且文件格式与此一致
city_info[city_name] = population # 存储城市名和人口信息到字典中
return city_info
def search_city_info(city_info, query):
# 模糊查找城市信息
matches = []
for city_name, _ in city_info.items():
if re.search(query, city_name, re.IGNORECASE): # 不区分大小写进行模糊匹配
matches.append(city_name)
return matches
def display_city_info(city_name, city_info):
population = city_info[city_name] if city_name in city_info else 'Not found!'
print(f"{city_name} is a city in CHN, and its population is: {population}")
def main():
filename = 'City.txt' # 文件名要求保存为Citylnfo.py中的文件名,否则视为无效作业,这里假设文件名正确且文件存在。
city_info = read_city_info_from_file(filename) # 读取城市信息
while True:
query = input("--Please enter the whole or part of a city's name (Quit() to quit): ") # 输入城市名或Quit()退出
if query == 'Quit()': # 输入Quit()则退出程序
break
matches = search_city_info(city_info, query) # 查找匹配的城市信息
count = len(matches) # 计算匹配的城市数量
print("Count:", count) # 输出匹配的城市数量
for match in matches: # 显示匹配到的城市信息
display_city_info(match, city_info)
print() # 输出空行分隔不同查询结果
if __name__ == '__main__': # 确保脚本作为主程序运行时才执行main函数中的内容,避免被导入时执行。
main() # 运行主函数实现程序功能
请注意,这个代码假设City.txt文件的格式是每行一个城市名和一个与之对应的数字(可能是人口或其他数据),两者之间用Tab分隔。此外,为了简单起见,这里直接假设文件名是City.txt且该文件存在于脚本运行的当前目录下。在实际应用中,你可能需要根据实际情况调整文件路径和读取方式。