将单个/多个字符更改为另一个单个字符

时间:2012-07-14 09:39:31

标签: python string replace character

例如,我有一个这样的字符串:

my_string = 'a hello aaaaa hi aaaaaaa bye bbb'

我想将'a''a'更改为'b'。所以我想要的输出是:

changed_string = 'b hello b hi b bye bbb'

我尝试使用替换,然后将多个'b' s添加到单个'b',但这会影响最初位于字符串中的多个'b'

我不想要像前n个字符那样的答案。

有什么建议吗?

4 个答案:

答案 0 :(得分: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'

答案 1 :(得分:2)

使用正则表达式。

取决于您的工具,它可能是一行代码或2-3行代码。

使用vim

s/a+/b/g

-

哦,没注意到它是python。见jamylak的回答。

答案 2 :(得分: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'

答案 3 :(得分: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' - 它会使这些单词保持不变,这可能是也可能不是...