【发布时间】:2018-03-28 14:07:04
【问题描述】:
假设有一个任意长度的字符串,它只包含字母 A 到 D:
s1 = 'ACDCADBCDBABDCBDAACDCADCDAB'
用“C”替换每个“B”和用“B”替换每个“C”的最有效/最快的方法是什么。
这就是我现在正在做的事情:
replacedString = ''
for i in s1:
if i == 'B':
replacedString += 'C'
elif i == 'C':
replacedString += 'B'
else:
replacedString += i
这可行,但显然不是很优雅。问题是我正在处理可能是数百万个字符长的字符串,所以我需要一个更好的解决方案。
我想不出用 .replace() 方法来做到这一点。 This 建议也许正则表达式是要走的路。这也适用于这里吗?如果是这样,什么是合适的正则表达式?有没有更快的方法?
谢谢。
【问题讨论】:
-
“重复”问题似乎解决了删除字符而不是替换的问题。
-
同样的想法,
s1.translate(str.maketrans('BC', 'XY')) -
是的,我正要告诉你关于 Cyber 标记为重复之前的字符串翻译,但基本上,你不想使用字典,因为你会替换已经替换的值。
-
如果链接为重复的帖子对您没有帮助,请参阅:tutorialspoint.com/python/string_translate.htm
-
“高效”对不同的人可能意味着不同的东西。你只想迭代一次吗?如果您有能力进行多次迭代,请使用
str.replace,否则请使用翻译。