Use*_*828 0 python parsing if-statement list
我试图在Python中创建一个解析器,该解析器遍历多个文件,搜索给定的单词,并返回包含该字符串的所有行。
我正在使用的方法是从包含搜索到的单词的文档中多次复制同一行,如果该行包含用户尝试搜索的多个单词。
我当前使用的搜索方法是:
for line in range(0,length_of_documents):
for word in range(0,words):
if words[word] in document[line]:
print(document[line])
Run Code Online (Sandbox Code Playgroud)
为了克服这个问题,我需要编写如下内容:
for line in range(0,length_of_documents):
for word in range(0,words):
if words[0] in document[line] or if words[1] in document[line] or if words[2] in document[line]:
print(document[line])
Run Code Online (Sandbox Code Playgroud)
但是我不知道用户可以为搜索字符串输入多少个单词。有什么可能的解决方案?
我使用过eval()函数,该函数会在运行时动态生成的字符串中传递“如果document [line]中的words [0]或document [line]中的word [1]或........”,但这不起作用。我在'if'处收到语法错误。
if 介绍整个语句,而不是每个单独的条件。
if words[0] in document[line] or words[1] in document[line] or words[2] in document[line]:
print(document[line])
Run Code Online (Sandbox Code Playgroud)
这可以更简明地写,特别是因为你要遍历所有的words使用any功能。
if any(x in document[line] for x in words):
print(document[line])
Run Code Online (Sandbox Code Playgroud)
看起来您只是想遍历的每个元素document,而对索引没有特别的兴趣。
for line in document:
if any(x in line for x in words):
print(line)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |