【问题标题】:Trying to regex all capitalized words EXCEPT those immediately following a period in Python尝试正则表达式所有大写的单词,除了那些紧跟在 Python 中的一段时间之后
【发布时间】:2020-04-27 17:20:31
【问题描述】:

我正在尝试让机器人抓取文本并高度准确地吸收所有专有名词/短语。因此,在句子中间大写的任何内容,连续大写的任何内容都被视为同一短语(和列表条目)的一部分。

到目前为止我有:

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)

它需要更多周围的小写单词,但不太容易受到前一期问题的影响。我已经在这几个小时了。有人看到我做错了吗?

【问题讨论】:

标签: python regex string word


【解决方案1】:

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

类似\.? *[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)

['这个', '.这个','另一个','。和','你好']

['这个', ' 另一个','你好']

【讨论】:

    猜你喜欢
    • 2020-07-12
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    相关资源
    最近更新 更多