文字列形式の一連のトークンとして解析しようとしている大量の文字列がありますが、問題が見つかりました。文字列の多くは似ているため、string.replace()
以前に置き換えられた文字が再び置き換えられることがあります。
置き換えられる文字列が「goto」であり、「41」(16進数)に置き換えられ、ASCII(「A」)に変換されるとします。後で、文字列 'A' も置換されるため、変換されたトークンが再び置換され、問題が発生します。
文字列を 1 回だけ交換するにはどうすればよいでしょうか? 元の文字列から各トークンを分割し、一度に 1 つずつ検索すると、非常に時間がかかります。
これは私が今持っているコードです。多かれ少なかれ機能しますが、それほど高速ではありません
# The largest token is 8 ASCII chars long
'out' is the string with the final outputs
while len(data) != 0:
length = 8
while reverse_search(data[:length]) == None:#sorry THC4k, i used your code
#at first, but it didnt work out
#for this and I was too lazy to
#change it
length -= 1
out += reverse_search(data[:length])
data = data[length:]