我在Python中使用正则表达式来提取“和”字。含义,由和分隔的单词。
例如
到目前为止的努力:
import re
read = open("sample.txt", "r")
regex = re.compile('(?:\S+\s)?\S*and\S*(?:\s\S+)?')
f=open('write.txt','w')
for line in read:
words = regex.findall(line)
for word in words:
f.write(str(word)+'\n')
f.close()
这段代码似乎运行良好,但可以查找命令等内容。
所以我使用了这个正则表达式
regex = re.compile('a-zA-Z]+\s?\S*and\S*\s+[a-zA-Z]+')
在网站上运行良好,但只返回单词而没有前面的单词和后续单词作为python中的输出。
我的目的是找到在文档内和文档内分隔的单词。
输入
This is a sample text to find profit and loss. It should also find banking and finance. But it should not find commands.
当前输出
期待出局
答案 0 :(得分:2)
你让它变得比它需要的更复杂。只需使用以下正则表达式:
\S+\sand\s\S+
问题是您在\S*
附近添加了and
。它匹配“和”周围的任意数量的非空白字符,这将匹配像“白兰地”这样的单词。
答案 1 :(得分:1)