例如,我有一个这样的字符串:
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个字符那样的答案。
有什么建议吗?
答案 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'
- 它会使这些单词保持不变,这可能是也可能不是...