用python挤压字符

Luc*_*man 1 python regex

我将如何使用python执行此操作:

如果我有一个格式如下的字符串:

A..a.b.c
Run Code Online (Sandbox Code Playgroud)

使它像:

A.a.b.c
Run Code Online (Sandbox Code Playgroud)

但我事先不知道我有多少个点?

这就像linux中的tr -s函数

the*_*olf 7

如果您想要一般格式,只用其中一个字符替换任何重复字符序列:

>>> import re
>>> s='aaa,,bb,c'
>>> re.sub(r'(.)(\1+)', r'\1', s)
'a,b,c'
Run Code Online (Sandbox Code Playgroud)

如果您只想限制某些字符:

>>> re.sub(r'([\w])(\1+)', r'\1', s)
'a,,b,c'
>>> re.sub(r'([,])(\1+)', r'\1', s)
'aaa,bb,c'
Run Code Online (Sandbox Code Playgroud)

你的例子:

>>> s='A..a.b.c'
>>> re.sub(r'([.])(\1+)', r'\1', s)
'A.a.b.c'
Run Code Online (Sandbox Code Playgroud)


Ray*_*ger 5

正则表达式替换很好地找到模式(重复点)并替换它们(用一个点):

>>> import re
>>> re.sub(r'\.+', '.', 'A..a.b.c')
'A.a.b.c'
Run Code Online (Sandbox Code Playgroud)