例如,如果
s = "111111111111234"
or
s = "1111234"
or
s = "jsdfjkdsnfkjds111jknsdjkfsd"
or
s = "111as1as11"
我想将任何1个连续的块减少到单个1。
1234
1234
jsdfjkdsnfkjds1jknsdjkfsd
1as1as1
答案 0 :(得分:3)
您可以使用re.sub
import re
s = '111111111111234'
print re.sub('1+', '1', s)
# '1234'
说明:
'1+'
- +
匹配前一个正则表达式的一次或多次重复
(在这种情况下为1
)'1'
- 告诉re.sub
用什么来替换它。s
- 执行re.sub
的字符串。答案 1 :(得分:1)
import re
re.sub('(.)\\1+', "\\1", "1111122233334444")
#=> "1234"
答案 2 :(得分:0)
使用itertools.groupby()
:
In [162]: from itertools import groupby
In [163]: strs="111111111111234"
In [164]: "".join(k if k=='1' else "".join(g) for k,g in groupby(strs))
Out[164]: '1234'
In [170]: strs="1111112222111111234"
In [171]: "".join(k if k=='1' else "".join(g) for k,g in groupby(strs))
Out[171]: '122221234'
或将所有重复的项目减少为单个项目:
In [175]: strs="1111112222111111234"
In [176]: "".join(k for k,g in groupby(strs))
Out[176]: '121234'
答案 3 :(得分:0)
您可以使用set
删除重复项,然后使用join
结果列表:
>>> ''.join(set('11111234'))
'1324'