Python中的正则表达式删除逗号和空格

时间:2019-02-28 02:35:38

标签: regex python-3.x

我有一个包含多个逗号和空格的字符串,作为单词之间的分隔符。以下是一些示例:

ex #1: string = 'word1,,,,,,,     word2,,,,,,     word3,,,,,,'  
ex #2: string = 'word1         word2       word3'  
ex #3: string = 'word1,word2,word3,'  

我想使用正则表达式将上述3个示例中的任何一个都转换为“ word1,word2,word3”-(注意:结果中最后一个单词后没有逗号)。

我使用了以下代码:

import re
input_col = 'word1    ,   word2     , word3,    '
test_string = ''.join(input_col)
test_string = re.sub(r'[,\s]+', ' ', test_string)
test_string = re.sub(' +', ',', test_string)
print(test_string)  

我得到的输出为“ word1,word2,word3”。而我实际上要“ word1,word2,word3”。 word3后没有逗号。

我应该使用哪种正则表达式和re方法来实现这一目标?

4 个答案:

答案 0 :(得分:0)

如何在程序末尾添加以下句子:

re.sub(',+$','', test_string)

可以删除字符串末尾的逗号

答案 1 :(得分:0)

您可以简单地使用[ ]+来检测多余的空格,并使用,\s*$来检测最后的逗号。然后,您可以简单地将[ ]+,[ ]+替换为,,最后一个逗号替换为空字符串

import re
input_col = 'word1    ,   word2     , word3,    '
test_string = re.sub('[ ]+,[ ]+', ', ', input_col) # remove extra space
test_string = re.sub(',\s*$', '', test_string) # remove last comma
print(test_string)

答案 2 :(得分:0)

一种方法是先分割为适当的模式,然后以逗号连接结果数组:

string = 'word1,,,,,,,     word2,,,,,,     word3,,,,,,'
parts = re.split(",*\s*", string)
sep = ','
output = re.sub(',$', '', sep.join(parts))
print(output

word1,word2,word3

请注意,我最终致电re.sub来删除可能的尾部逗号。

答案 3 :(得分:0)

您可以使用split创建一个数组并过滤len <1个数组

import re
s='word1    ,   word2     , word3,    '
r=re.split("[^a-zA-Z\d]+",s)
ans=','.join([ i for i in r if len(i) > 0 ])