在python中将任何特殊字符的多次出现替换为1

Shw*_*eta 7 python regex replace special-characters

我有一个字符串:

string = "happy.....!!!"
Run Code Online (Sandbox Code Playgroud)

我希望输出像:

new_string = "happy.!"
Run Code Online (Sandbox Code Playgroud)

我知道如何替换任何特殊字符的多次出现.它可以如下完成:

line = re.sub('\.+', '.', line)
Run Code Online (Sandbox Code Playgroud)

但我想替换所有特殊字符,如",./ \等等.一种方法是为每个特殊字符编写它.但是想知道是否有一种简单的方法可以为一行中的所有特殊字符编写它.

anu*_*ava 12

您可以使用\W以匹配任何非单词字符:

line = re.sub(r'\W+', '.', line)
Run Code Online (Sandbox Code Playgroud)

如果要替换相同的特殊字符,请使用:

line = re.sub(r'(\W)(?=\1)', '', line)
Run Code Online (Sandbox Code Playgroud)

  • 当然。`(\W)` 将匹配任何非单词字符并将其放入捕获的组 #1。`(?=\1)` 是一种前瞻,确保同一组至少再重复一次。替换是空字符串,因此这会删除所有重复的非单词字符。 (4认同)

Avi*_*Raj 6

我想你的意思是这个,

line = re.sub(r'(\W)\1+', r'\1', line)
Run Code Online (Sandbox Code Playgroud)

https://regex101.com/r/eM5kV8/1