试图正则化所有大写单词,但Python中紧跟句点之后的单词除外

2024-03-29 10:37:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让机器人在文本中爬行,并以高度准确的方式吸收所有专有名词/短语。因此,任何一个句子中的大写字母,任何一个连续的大写字母都被认为是同一个短语的一部分(和列表项)。p>

到目前为止,我已经:

tag_string = re.findall('([a-zA-Z]+)\s([A-Z][a-z]*)\s([a-zA-Z]+)', in_string)

与前一个句点的专有名词有冲突。还接受周围的小写单词

我还有:

#tag_string = re.findall('([a-zA-Z]+)\s([A-Z][a-z]*)(\s([a-zA-Z]+)|\.)', in_string)

这需要更多的小写字母,但不太容易受到前一时期问题的影响。我已经做了好几个小时了。有人知道我做错了什么吗


1条回答
网友
1楼 · 发布于 2024-03-29 10:37:31

一种选择是匹配所有内容,确保匹配时间段。然后可以过滤掉包含句点的所有匹配项

像这样的\.? *[A-Z][a-z]*

然后,您可以过滤掉不符合要求的匹配项

import re

out = re.findall('\.? *[A-Z][a-z]*', 'This is a sentence. This is Another sentence.   And this is a anoth.er Hello')
outFil = [x for x in out if x[0] != '.']
print(out, outFil)

['This', '. This', ' Another', '. And', ' Hello']

['This', ' Another', ' Hello']

相关问题 更多 >