gpt4 book ai didi

python - 在句点之间提取字符串,除非 CO

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:58 25 4
gpt4 key购买 nike

我正在努力使用正则表达式来提取句号之间的部分字符串,但如果它前面有特定字母(例如示例中的 CO),则忽略句号。我们可以假设相关 block 总是以“LTD”结尾。

案例一:

string = "FREDS CHIP SHOP.  S & B SERVICES CO. & SONS LTD. 1-12 THE STREET"

我要:“S & B SERVICES CO. & SONS LTD。”

案例二:

string = "SOME TEXT.  BUSINESS NAME LTD. 1-12 THE STREET"

我想要“BUSINESS NAME LTD.”

案例三:

string = "SIMPLE BUSINESS NAME LTD. 1-12 THE STREET"

我想要“SIMPLE BUSINESS NAME LTD.”

我目前有:

#!/usr/bin/python
import sys
import re

vnumber_name = "FREDS CHIP SHOP. S & B SERVICES CO. & SONS LTD. 1-12 THE STREET"
#vnumber_name = "SOME TEXT. BUSINESS NAME LTD. 1-12 THE STREET"
#vnumber_name = "SIMPLE BUSINESS NAME LTD. 1-12 THE STREET"

def test(vnumber_name):
#ltd = re.search(r'.+\sLTD[.]?', vnumber_name)
ltd = re.search(r'[.?][\s]{1,2}(?:[^.]+|(?!CO.))LTD[.]?', vnumber_name)
if ltd:
print "got it: " + ltd.group(0)
else:
print "nothing"

test(vnumber_name)

这是不对的。

我可以创建一些 if 子句,但最好用一行正则表达式来实现。

最佳答案

您可能希望免除多个缩写,因此这里有一些使用“负向回顾”的更灵活的方法:从字符串的开头匹配到下一个遵循某些字符串的句点 ( COCORP(对于此示例))。非贪婪的 .*?(后跟句点)使您匹配到第一个这样的句点。

.*?(?<!..CO|CORP)\.

这将使您能够正确地将字符串分解为“句子”。如果您只对以 LTD 结尾的那些感兴趣,则可以选择那些。

关于python - 在句点之间提取字符串,除非 CO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13742447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com