0

たとえば、

s = "111111111111234"
or
s = "1111234"
or
s = "jsdfjkdsnfkjds111jknsdjkfsd"
or
s = "111as1as11"

連続する 1 のチャンクを 1 つの 1 に減らしたい。

1234
1234
jsdfjkdsnfkjds1jknsdjkfsd
1as1as1
4

4 に答える 4

3

使用できますre.sub

import re
s = '111111111111234'
print re.sub('1+', '1', s)
# '1234'

説明:

  • '1+'- は+、前の正規表現の 1 回以上の繰り返しに一致します (この場合は1)
  • '1're.sub-何に置き換えるかを指示します。
  • s- 実行する文字列re.sub
于 2013-01-26T03:59:13.337 に答える
1
import re
re.sub('(.)\\1+', "\\1", "1111122233334444")
#=> "1234"
于 2013-01-26T04:01:29.613 に答える
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'
于 2013-01-26T03:58:00.740 に答える
0

set重複を取り除くために使用できjoin、結果のリストは次のとおりです。

>>> ''.join(set('11111234'))
'1324'
于 2013-01-26T04:00:11.013 に答える