Python中用户输入与文本文件内容不区分大小写匹配返回空列表问题排查
问题分析与解决方案
你遇到的问题核心是遍历对象搞错了!咱们拆解下你的代码逻辑:
你已经把文件内容按行分割成了listText(这才是存储每行内容的列表),但你的列表推导式却在遍历textString——也就是整个文件的原始字符串,这时候item代表的是单个字符,而不是一行完整文本。单个字符里自然不可能包含“Bruce”这样的单词,这就是明明有匹配内容却返回空列表的原因。
修正后的代码
把列表推导式里的textString换成之前生成的listText,让它遍历每行内容而非单个字符:
user_input = self.lineEditSearch.text() print(user_input) textString = self.ReadingFileContent(Item) listText = list(textString.splitlines()) print(listText) # 替换遍历对象为listText,针对每行做匹配检查 self.varStr = [item for item in listText if user_input.lower() in item.lower()] print(self.varStr)
验证逻辑
修正后,列表推导式会逐个检查listText里的每一行内容:
- 当你输入“Bruce”时,会匹配到所有包含该单词的行(比如
'Bruce Demaugé'),就能得到你预期的结果了。
另外提一句,你之前注释掉的那行代码逻辑也有问题:c.capitalize()是返回一个新字符串,不是布尔判断值,不过既然你已经不用它了,就不多展开啦。
内容的提问来源于stack exchange,提问作者Propy Propy
相关产品推荐
相关产品推荐

