如何在Python中使用regex替换缩写中的点?

2024-10-04 03:25:44 发布

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

基本上,我想去掉缩写中的所有点,比如“L.L.C.”,转换成“LLC”。我没有所有缩写的清单。我想在找到它们的时候把它们转化。这一步在句子标记化之前执行。你知道吗

text = """
    Proligo L.L.C. is a limited liability company.  
    S.A. is a place.  
    She works for AAA L.P. in somewhere.  
    """
text = re.sub(r"(?:([A-Z])\.){2,}", "\1", text)

这不管用。你知道吗

我想去掉缩写中的点,这样这些点就不会打断句子的标记符。你知道吗

谢谢你!你知道吗

另外,抱歉说得不够清楚。我编辑了示例文本。你知道吗


Tags: textin标记forisplacecompany句子
3条回答

尝试使用带有re.sub的回调函数:

def callback( str ):
    return str.replace('.', '')

text = "L.L.C., S.A., L.P."
text = re.sub(r"(?:[A-Z]\.)+", lambda m: callback(m.group()), text)
print(text)

regex模式(?:[A-Z]\.)+将匹配任意数量的大写缩写。然后,对于每一个匹配,回调函数都会去掉点。你知道吗

import re
string = 'ha.f.d.s.a.s.d.f'
re.sub('\.', '', string)

#output
hafdsasdf

请注意,只有当您的文本不包含多个句子时,此方法才能正常工作。如果这样做,它将创建一个长句,因为所有的“.”都被替换。你知道吗

使用此正则表达式:

>>> re.sub(r"(?<=[A-Z]).", "", text)
'LLC, SA, LP'
>>> 

regex101

相关问题 更多 >