在Python中,如何在一个前后都有空格的文件中搜索单词?
我想逐行搜索文件中的某个特定单词,但我想确保该特定单词的前后都有空格 我知道我必须用正则表达式来做这件事。我一直在阅读指南,但如何在同一个语句中同时应用“向前看”和“向后看”让我感到困惑 我该怎么做在Python中,如何在一个前后都有空格的文件中搜索单词?,python,regex,python-3.x,search,Python,Regex,Python 3.x,Search,我想逐行搜索文件中的某个特定单词,但我想确保该特定单词的前后都有空格 我知道我必须用正则表达式来做这件事。我一直在阅读指南,但如何在同一个语句中同时应用“向前看”和“向后看”让我感到困惑 我该怎么做 counter = 0 out = open('out.txt', 'w') with open(original_db, 'r') as db: for line in db: if re.search(word, line, re.IGNORECASE):
counter = 0
out = open('out.txt', 'w')
with open(original_db, 'r') as db:
for line in db:
if re.search(word, line, re.IGNORECASE):
counter += 1
out.write(line)
print("Entries found for word: " + str(counter))
您可以在模式中添加单词边界锚定符\b
:
if re.search('\b{}\b'.format(re.escape(word)), line, re.IGNORECASE):
仅当一个单词字符(a-z、0-9或\uu
字符)前面或后面紧跟着另一个非单词字符时,这些字符才匹配。这比空白更宽;标点符号前后的单词也起作用
如果必须只匹配空格分隔的单词,那么不要使用正则表达式;只需在空格上拆分:
if word in line.lower().split():
为什么不
split
该行并检查结果列表中是否存在该单词?可以包括示例行吗?请包括更多详细信息,否则不清楚。这是否意味着如果“单词”不在行的开始/结束处,您也只想匹配它?对我来说太快了,很好的回答:)如果重新搜索('\b{}\b'.format(re.escape(word)),line,re.IGNORECASE):
返回了零个结果,但拆分器工作正常。感谢您的快速响应。希望您在变量“word”中填入了您的单词?@aventinos,而没有看到难以调试的示例单词。高兴的分裂工作。