【发布时间】:2017-06-25 03:08:26
【问题描述】:
假设我有以下使用 Python3.x 的超大字符串,大小为几 GB,长度超过 100 亿个字符:
string1 = "XYZYXZZXYZZXYZYXYXZYXZYXZYZYZXY.....YY"
考虑到它的长度,这已经需要 +GB 才能加载到 RAM 中。
我想编写一个函数,将每个X 替换为A,将Y 替换为B,将Z 替换为C。我的目标是尽可能快地做到这一点。当然,这也应该是有效的(例如,我不确定可能会有一些 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'
我担心这不是最有效的方法,因为我在如此大的数据结构上同时调用三个函数。
对于这么大的字符串,最有效的解决方案是什么?
【问题讨论】:
-
你现在的表现如何?你有理由相信它在某些方面不令人满意吗?
-
@wallyk 这很笨重。我认为
.replace()是首先通过整个字符串。所以,这个函数实际上是三个函数调用,内存中至少保存了三个临时字符串。效率不是很高。
标签: python string python-3.x replace