1

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

my_string = 'a hello aaaaa hi aaaaaaa bye bbb'

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

changed_string = 'b hello b hi b bye bbb'

我尝试使用 replace ,然后将多个'b's 设置为 single 'b',但它会影响'b'最初在字符串中的多个 s。

我不想要像前 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

使用正则表达式。

根据您的工具,它可能是一行代码或 2-3 行代码。

用 vim

s/a+/b/g

--

哦,没有注意到它是python。见贾米拉克的回答。

于 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 回答