Python读取wordlist文本按输入子串筛选匹配无返回结果排查
问题根因分析
- 原代码中对每行内容调用
split()后生成的是子列表,直接append()到list_of_lists后,最终得到的wordlist是嵌套列表结构,例如格式为[["bee"], ["free"], ["test"]] - 列表推导式中判断
contains in match时,match是单个元素的子列表,字符串子串不可能匹配列表元素,因此始终返回空结果
修复后的完整可运行代码
# 读取词库文件,直接生成一维单词列表 wordlist = [] with open(r"C:\Users\lisin\Desktop\Code\Bomb Party\wordlist.txt", "r", encoding="utf-8") as f: for line in f: # 直接提取每行的单词(假设每行一个单词,去掉首尾空白后加入列表) word = line.strip() if word: # 跳过空行 wordlist.append(word) # 输入要查询的子串 sub_str = input("? ") # 匹配包含子串的单词 matches = [word for word in wordlist if sub_str in word] print(matches)
补充说明
- 你后续给出的修复片段存在语法问题:
with a_file as myfile写法错误,a_file需要是open()返回的文件对象,不能直接这么用 - 按空格拆分的方式如果词库是每行一个单词的话反而容易引入多余空字符串,直接遍历每行取
strip()后的内容更稳妥
内容的提问来源于stack exchange,提问作者Alex L
相关产品推荐
相关产品推荐

