python - 替换字符串中多个字符的最有效方法

标签 python string

<分区>

假设有一个任意长度的字符串,它只包含字母 A 到 D:

s1 = 'ACDCADBCDBABDCBDAACDCADCDAB'

将每个“B”替换为“C”并将每个“C”替换为“B”的最有效/最快的方法是什么。

这是我现在正在做的:

replacedString = ''
for i in s1:
    if i == 'B':
        replacedString += 'C'
    elif i == 'C':
        replacedString += 'B'
    else:
        replacedString += i

这行得通,但显然不是很优雅。问题是我正在处理可能长达数百万个字符的字符串,因此我需要更好的解决方案。

我想不出用 .replace() 方法来做到这一点的方法。 This建议也许正则表达式是要走的路。这也适用于这里吗?如果是这样,什么是合适的正则表达式?有没有更快的方法?

谢谢。

最佳答案

我想向您展示翻译不当的后果。让我们假设我们有一个像字符串一样的 DNA 序列,我们想翻译成 RNA 字符串。一种方法使用不正确的替换,而另一种方法使用字符串连接。

string = 'GGGCCCGCGCCCGGG' # DNA string ready for transcription

替换

替换的问题是已经替换的字母将在未来的迭代中被替换。例如,您可以看到一旦完成,您将得到一个由相同字母组成的字符串,而不是完全反转。

string = 'GGGCCCGCGCCCGGG'

coding = {'A': 'U', 'T': 'A',
          'G': 'C', 'C': 'G'}

for k, v in coding.items():
    string = string.replace(k, v)

print string

串联

而是使用不同字符串的字符串连接。因此,您可以保留原始字符串而不会错误地替换。您当然可以使用字符串翻译,但我更喜欢字典,因为根据定义,它们映射值。

string = 'GGGCCCGCGCCCGGG'

coding = {'A': 'U', 'T': 'A',
          'G': 'C', 'C': 'G'}

answer = ''

for char in string:
    answer += coding[char]

print answer

关于python - 替换字符串中多个字符的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28775049/

相关文章:

python - 在 Pandas 中分配列值时的冗余计算

Python MySQLdb 遍历表

python - 用于 u""文字的编码

python - 如何将 ctx(上下文)传递给 CliRunner?

java - 编码 bat 字符串挑战未通过测试

string - VBA excel,比较两个工作簿中的字符串

python - 验证 Django 中是否存在电子邮件

string - 无法在golang中用单引号分配字符串

ruby - 在匹配特定条件时拆分字符串

android - 格式化字符串参数计数错误