У меня есть массивная строка, которую я пытаюсь проанализировать как серию токенов в строковой форме, и я обнаружил проблему: поскольку многие строки похожи, иногда выполнение string.replace()
приводит к повторной замене ранее замененных символов. 1002 *
скажем, у меня есть заменяемая строка 'goto', она заменяется на '41' (hex) и преобразуется в 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:]