Python 将单个/多个字符更改为另一个单个字符
例如,我有这样一个字符串:Python 将单个/多个字符更改为另一个单个字符,python,string,replace,character,Python,String,Replace,Character,例如,我有这样一个字符串: 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转换为单个'b',但是它会影响字符串中原来的多个'b's 我不想要前n个字符那样的答案 有什么建议吗?使用正则表达式 >>> import re >>>
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转换为单个'b'
,但是它会影响字符串中原来的多个'b'
s
我不想要前n个字符那样的答案
有什么建议吗?使用正则表达式
>>> 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'
根据您的工具,它可以是一行或2-3行代码
充满活力
s/a+/b/g
--
哦,没注意到是python。参见jamylak的答案。使用正则表达式 根据您的工具,它可以是一行或2-3行代码 充满活力
s/a+/b/g
--
哦,没注意到是python。参见jamylak的答案。不使用正则表达式,您可以这样做,尽管我更愿意使用正则表达式,因为它在这种情况下更清晰、更快
>>> 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'
不使用regex,您可以做到这一点,尽管我更愿意使用regex,因为它在这种情况下更清晰、更快
>>> 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'
请注意,虽然这适用于您的示例,但它不适用于重复字符是单词一部分的字符串,例如'aaaaa z'
-它将保留这些单词不变,这可能是可取的,也可能是不可取的
请注意,虽然这适用于您的示例,但它不适用于重复字符是单词一部分的字符串,例如
'aaaaa z'
-它将保留这些单词不变,这可能是可取的,也可能不是可取的…此处无需列表理解,请删除[
,]
,使其成为生成器。编辑:nvm我不认为它会那么低效,但正则表达式肯定很快。这里不需要列表理解,删除[
,]
,使其成为生成器。编辑:nvm我不认为它会有那么低的效率,但正则表达式肯定会很快再次询问您,但当我将句点(.)转换为其他内容时,我会遇到问题。(例如,b)如果我使用re.sub(r'.+',b',我的_字符串),结果是b。。。我能做些什么呢???@H.Choi这是因为
是一个特殊的字符,默认情况下,除了换行符之外,它可以替换任何字符。用反斜杠将其转义,如\.+
。您可以在此处看到所有特殊字符:。如果我的回答对您有帮助,也请接受我的回答:D很抱歉再问您一次,但我在将句点(.)转换为其他内容时遇到问题。(例如,b)如果我使用re.sub(r'.+',b',我的_字符串),结果是b。。。我能做些什么呢???@H.Choi这是因为
是一个特殊的字符,默认情况下,除了换行符之外,它可以替换任何字符。用反斜杠将其转义,如\.+
。您可以在此处看到所有特殊字符:。如果我的回答对你有帮助,也请接受我的回答:D