【问题标题】:Remove spaces in words including ampersand with Regex使用正则表达式删除单词中的空格,包括与号
【发布时间】:2026-01-22 14:25:02
【问题描述】:

在 python3 中,使用 re.sub(pattern, replacement, string),我已经能够删除 & 符号周围的空格。例如,以下短语应修改如下:

A & D 替代解决方案”到“AD 替代解决方案

WESTMOUNT PLUMBING & HEATING”到“WESTMOUNT PLUMBING HEATING

A PANORAMIC VIEW B & B”到“A PANORAMIC VIEW BB”

我已经能够修复前两种模式,但我遇到了第三种模式的问题,我尝试了以下方法:

import re
#str="A & D ALTERNATIVE SOLUTIONS LTD."
#str="WESTMOUNT PLUMBING & HEATING LTD."
str= "A PANORAMIC VIEW B & B"


str = re.sub('(?<=\\&)\s','',str)
str = re.sub('(?<=^[A-Z])\s','',str)
str = re.sub('[^\w\s]','',str)

print(str)

我怎样才能得到所有的模式?

【问题讨论】:

  • \1\2 表示您替换为第一个捕获的组和第二个捕获的组

标签: regex python-3.x regex-lookarounds regex-group


【解决方案1】:

您可以执行以下操作:

strlist = ["A & D ALTERNATIVE SOLUTIONS LTD.","WESTMOUNT PLUMBING & HEATING LTD.", "A PANORAMIC VIEW B & B"] 
pattern = r'(\w{2}\s)?\s?& (\w{2})?'

 [re.sub(pattern,r'\1\2',str_) for str_ in strlist]
Out[120]: 
['AD ALTERNATIVE SOLUTIONS LTD.',
 'WESTMOUNT PLUMBING HEATING LTD.',
 'A PANORAMIC VIEW BB']

【讨论】:

  • 完美,它就像一个沙姆。谢谢 :) \1\2 在 sub 的替换部分是什么意思?
最近更新 更多