删除某些字符后的空格

时间:2018-10-15 20:11:22

标签: python regex split substring whitespace

例如,我想更改以下字符串

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)

但是,这也删除了定界符,这不是我想要实现的。因此,基本上,我想提供一个字符列表,后跟空白,以便删除该子字符串中的空白。

2 个答案:

答案 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.'