のは、私がPython3.xを使用して、以下の非常に大きな文字列、数GBのサイズで、長さは100億文字があるとしましょう:考えるPython3.x:非常に長い文字列内の文字を置換する最も簡単な方法
string1 = "XYZYXZZXYZZXYZYXYXZYXZYXZYZYZXY.....YY"
をその長さ、これはすでに+ GBをRAMにロードするのに要します。
私はすべてのA
とX
、B
とY
、および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'
を出力し、私は同時にだとして、これは、最も効率的な方法ではありません心配しますこのような大きなデータ構造上で3つの関数を同時に呼び出します。
この大きな文字列の最も効率的なソリューションは何ですか?
現在のパフォーマンスはどのようなものですか?あなたはそれが何らかの形で不満足だと信じる理由がありますか? – wallyk
@wallykそれはclunkyです。私は '.replace()'が最初に文字列全体を通過していると思います。したがって、この関数は、少なくとも3つの一時的な文字列をメモリに保持する3つの関数呼び出しです。ひどく効率的ではありません。 – ShanZhengYang