Python按ID查询文本文件中对应项目全部关联信息的实现方法
问题分析
你现有代码的问题是仅会打印匹配到ID的单行内容,无法输出同项目的其他关联字段,同时存在模糊匹配缺陷,比如输入1会同时匹配到ID为1、11、101的项目。
调整后代码
pick = input("Enter id: ").strip() found = False with open("Inputdetails.txt", "r", encoding="utf-8") as file: for line in file: # 精确匹配目标ID行,避免模糊匹配误判 if line.startswith("Id: ") and line.split(": ")[1].strip() == pick: found = True # 遇到空行说明当前项目内容结束,终止打印 if found and line.strip() == "": break # 匹配到目标项目后打印当前行 if found: # 输出自带两个空格前缀,符合你期望的格式 print(f" {line}", end="") # 可选:添加ID不存在的提示 if not found: print(f"未找到ID为 {pick} 的项目")
逻辑说明
- 提前获取用户输入并去除首尾空格,避免输入时多余空格导致匹配失败
- 用
found标记位控制打印状态,默认不打印任何内容 - 仅当行以
Id:开头、且冒号后的数值和输入完全一致时,才开启打印标记 - 开启打印后遇到空行即判定当前项目结束,直接终止循环,避免打印其他项目内容
- 打印时加
end=""是因为读取的行本身自带换行符,避免重复输出多余空行
内容的提问来源于stack exchange,提问作者nooBie
相关产品推荐
相关产品推荐

