gpt4 book ai didi

python - REGEX:删除带有一个或两个字母的字符串之间的空格

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:27 24 4
gpt4 key购买 nike

考虑下表第一列中显示的以下原始字符串:

Original String                  Parsed String                   Desired String
'W. & J. JOHNSON LMT.COM' #W J JOHNSON LIMITED #WJ JOHNSON LIMITED
'NORTH ROOF & WORKS CO. LTD.' #NORTH ROOF WORKS CO LTD #NORTH ROOF WORKS CO LTD
'DAVID DOE & CO., LIMITED' #DAVID DOE CO LIMITED #DAVID DOE CO LIMITED
'GEORGE TV & APPLIANCE LTD.' #GEORGE TV APPLIANCE LTD #GEORGE TV APPLIANCE LTD
'LOVE BROS. & OTHERS LTD.' #LOVE BROS OTHERS LTD #LOVE BROS OTHERS LTD
'A. B. & MICHAEL CLEAN CO. LTD.'#A B MICHAEL CLEAN CO LTD #AB MICHAEL CLEAN CO LTD
'C.M. & B.B. CLEANER INC.' #C M B B CLEANER INC #CMBB CLEANER INC

需要删除标点符号,我已按如下方式完成:

def transform(word):
word = re.sub(r'(?<=[A-Za-z])\'(?=[A-Za-z])[A-Z]|[^\w\s]|(.com|COM)',' ',word)

然而,还有最后一点我没能得到。删除标点符号后,我得到了很多空格。我怎样才能有一个正则表达式将首字母放在一起并为常规单词保留单个空格(没有首字母)?

用这种替换上述字符来获取所需字符串的方法不好吗?

感谢您让我继续学习:)

最佳答案

我认为分部分执行此操作更简单。首先,删除 .com 和除 space& 之外的任何标点符号。然后,删除仅由一个字母包围的 space&。最后,用一个空格替换所有剩余的 space& 序列:

import re
strings = ['W. & J. JOHNSON LMT.COM',
'NORTH ROOF & WORKS CO. LTD.',
'DAVID DOE & CO., LIMITED',
'GEORGE TV & APPLIANCE LTD.',
'LOVE BROS. & OTHERS LTD.',
'A. B. & MICHAEL CLEAN CO. LTD.',
'C.M. & B.B. CLEANER INC.'
]

for s in strings:
s = re.sub(r'\.COM|[^a-zA-Z& ]+', '', s, 0, re.IGNORECASE)
s = re.sub(r'(?<=\b\w)\s*[ &]\s*(?=\w\b)', '', s)
s = re.sub(r'\s*[& ]\s*', ' ', s)
print s

输出

WJ JOHNSON LMT
NORTH ROOF WORKS CO LTD
DAVID DOE CO LIMITED
GEORGE TV APPLIANCE LTD
LOVE BROS OTHERS LTD
AB MICHAEL CLEAN CO LTD
CM BB CLEANER INC

Demo on rextester

更新

这是在编辑更改最后数据所需结果的问题之前编写的。鉴于编辑,上面的代码可以简化为

for s in strings:
s = re.sub(r'\.COM|[^a-zA-Z ]+|\s(?=&)|(?<!\w\w)\s+(?!\w\w)', '', s, 0, re.IGNORECASE)
print s

Demo on rextester

关于python - REGEX:删除带有一个或两个字母的字符串之间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59221856/

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