Python读取文件识别疑问句输出标记代码运行无输出问题排查
代码问题排查与修正
你当前代码存在3个核心错误:
- 使用
f.read()读取文件会返回整个文件的单字符串,for line in lines实际是遍历单个字符,而非逐行处理,逻辑完全不匹配需求 - 判断条件写为
line == 'how'这类全等判断,即使拿到整行内容也不可能匹配到疑问词,永远不会触发Yes分支 - 打印语句输出的是全量文件内容
lines,而非当前遍历的行,即使逻辑正确也无法得到逐行输出的效果
修正后代码
with open("data.txt", "rt", encoding="utf-8") as f: # 逐行读取文件内容得到行列表 lines = f.readlines() # 定义待匹配的疑问词集合,可按需扩展 q_words = {"how", "what", "where"} for line in lines: # 去除行首尾的换行、多余空格 processed_line = line.strip() # 跳过空行,不需要可删除 if not processed_line: continue # 转为小写匹配避免大小写误判,判断是否包含任意疑问词 has_q_word = any(w in processed_line.lower() for w in q_words) if has_q_word: print(f"{processed_line} Yes") else: print(f"{processed_line} No")
可选优化(避免误判)
如果你需要避免however这类包含疑问词子串的普通词被误判,可以将判断逻辑修改为匹配独立单词:
# 把行拆分为小写单词列表后再判断 line_words = processed_line.lower().split() has_q_word = any(w in line_words for w in q_words)
运行上述代码即可得到你给出的预期输出结果。
内容的提问来源于stack exchange,提问作者silbia
相关产品推荐
相关产品推荐

