我有一个巨大的字符串,我试图将其解析为字符串形式的一系列标记,但我发现了一个问题:因为许多字符串都是相似的,有时这样做string.replace()
会导致以前替换的字符再次被替换。
假设我要替换的字符串是“goto”,它被“41”(十六进制)替换并转换为 ASCII(“A”)。稍后,字符串'A'也将被替换,因此转换后的令牌再次被替换,导致问题。
让字符串只更换一次的最佳方法是什么?将每个标记从原始字符串中分离出来并一次搜索一个需要很长时间
这是我现在拥有的代码。尽管它或多或少有效,但速度不是很快
# 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:]