例如,我想更改以下字符串
strr = 'Hello, this is a test to remove whitespace.'
收件人
'Hello,this is a testto removewhitespace.'
因此,应删除逗号,“ t”或“ e”字符后的空格。 我尝试过类似的事情:
re.sub(', |t |e ', ' ', strr)
但是,这也会删除逗号t和e。 之后,我尝试在剩余的空格上分割字符串。 我的第一种方法是像这样
re.split(' is |a |test|remove', strr)
但是,这也删除了定界符,这不是我想要实现的。因此,基本上,我想提供一个字符列表,后跟空白,以便删除该子字符串中的空白。
答案 0 :(得分:1)
类似的东西:
import re
str1 = 'Hello, this is a test to remove whitespace.'
str2 = re.sub(r'([te,])\s+', r'\1', str1)
print(str2)
应该工作,在这里您要匹配(并捕获)一个已知的组,然后加上任意数量的空格,然后用捕获的内容替换整个内容。
答案 1 :(得分:0)
您可以为此使用positive lookbehind [regex-tutorial]:
re.sub('(?<[,te]) ', '', strr)
此(?< ...)
后面的正向查找将寻找一个匹配项,但它不是该匹配项的一部分,因此,在您重新匹配它时就不会“吃掉”这些字符。 / p>
请注意,第二个参数应该是空字符串(因此,''
,而不是' '
),否则会“重新引入”空格。
然后产生:
>>> re.sub('(?<=[,te]) ', '', strr)
'Hello,this is a testto removewhitespace.'
如果要删除任意数字(所以一个或多个)空格字符(空格,换行等),可以使用\s+
代替:>
>>> re.sub('(?<=[,te])\s+', '', strr)
'Hello,this is a testto removewhitespace.'