1

たとえば、次のような文字列があります。

my_string = 'a hello aaaaa hi aaaaaaa bye bbb'

'a'または'a'sをに変更したい'b'。したがって、必要な出力は次のとおりです。

changed_string = 'b hello b hi b bye bbb'

replaceを使用してから、複数'b'のsを1つにしようとしましたが、元々文字列に含まれていた'b'複数のsに影響'b'します。

最初のn文字のような答えは必要ありません。

助言がありますか?

4

4 に答える 4

5
>>> import re
>>> my_string = 'a hello aaaaa hi aaaaaaa bye bbb'
>>> re.sub(r'a+', 'b', my_string)
'b hello b hi b bye bbb'
于 2012-07-14T09:45:18.107 に答える
2

正規表現を使用します。

ツールに応じて、1行または2〜3行のコードになります。

vimで

s/a+/b/g

-

ああ、それがpythonであることに気づかなかった。jamylakの答えを参照してください。

于 2012-07-14T09:48:06.420 に答える
0

正規表現を使用せずにこれを行うことができますが、この場合ははるかに明確で高速であるため、正規表現を使用したいと思います。

>>> from itertools import groupby
>>> my_string = 'a hello aaaaa hi aaaaaaa bye bbb'
>>> ''.join(''.join(g) if k != 'a' else 'b' for k, g in groupby(my_string))
'b hello b hi b bye bbb'
于 2012-07-14T10:05:01.823 に答える
0
>>> mystring = 'a hello aaaaa hi aaaaaaa bye bbb'
>>> ' '.join('b' if set(i)==set(['a']) else i for i in mystring.split())
'b hello b hi b bye bbb'

これはあなたの例では機能しますが、繰り返される文字が単語の一部である文字列では機能しないことに注意してください'aaaaaz'

于 2012-07-14T10:06:17.987 に答える