Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何在一个前后都有空格的文件中搜索单词?_Python_Regex_Python 3.x_Search - Fatal编程技术网

在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,而没有看到难以调试的示例单词。高兴的分裂工作。