我有一个包含多个逗号和空格的字符串,作为单词之间的分隔符。以下是一些示例:
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方法来实现这一目标?
答案 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 ])