假设我使用Python3.x有以下非常大的字符串,大小为几GB,长度为100亿个字符:
string1 = "XYZYXZZXYZZXYZYXYXZYXZYXZYZYZXY.....YY"
鉴于它的长度,这已经需要GB加载到RAM中 .
我想写一个函数,用 A
, Y
替换每个 X
,用 B
替换 Z
,用 C
替换 Z
. 我的目标是尽快做到这一点 . 当然,这也应该是有效的(例如,可能存在一些我不确定的RAM权衡) .
对我来说最明显的解决方案是使用 string
模块和 string.replace()
:
import string
def replace_characters(input_string):
new_string = input_string.replace("X", "A").replace("Y", "B").replace("Z", "C")
return new_string
foo = replace_characters(string1)
print(foo)
哪个输出
'ABCBACCABCCABCBABACBACBACBCBCAB...BB'
我担心这不是最有效的方法,因为我同时在如此大的数据结构上同时调用三个函数 .
对于这么大的字符串,最有效的解决方案是什么?
1 回答
一个更有效的内存方法,就是使用str.translate,不会产生如此多的临时字符串 .
这将只分配一个(在您的情况下特大)字符串 .