假设有一个任意长度的字符串,它只包含字母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表明也许正则表达式是解决问题的方法。这里也适用吗?如果是,那么什么是合适的正则表达式?还有更快的方法吗?
谢谢你。
使用正则表达式,它还处理大小写敏感度,例如,如果字符串中必须替换的字母表是小写的,则它将替换为小写替换字符,否则为大写:
除了
str.translate
方法之外,您只需构建一个翻译dict并自己运行它。我想告诉你不恰当翻译的后果。假设我们有一个像字符串一样的DNA序列,我们想翻译成RNA字符串。一种方法使用不正确的替换,而另一种方法使用字符串连接。
更换
替换的问题是已经替换的字母将在以后的迭代中替换。例如,您可以看到,一旦完成,您将拥有一个相同字母的字符串,而不是完全反转。
串联
相反,请使用不同字符串的字符串连接。因此,您可以保留原始字符串,而不会错误地替换。当然可以使用字符串翻译,但我倾向于使用字典,因为根据定义,它们映射值。
相关问题 更多 >
编程相关推荐