Code: Select all
'28 5A 31 34 0 0 0 F0'
In
Code: Select all
'28 5A 31 34 00 00 00 F0'
Code: Select all
$ python3
Python 3.12.3 (main, Feb 4 2025, 14:48:35) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> '28 5A 31 34 0 0 0 F0'.replace(" 0 ", " 00 ")
'28 5A 31 34 00 0 00 F0'
>>> '28 5A 31 34 0 0 0 F0'.replace(" 0 ", " 00 ").replace(" 0 ", " 00 ")
'28 5A 31 34 00 00 00 F0'
Ich habe dieses Verhalten tatsächlich nicht erwartet (fand es in meinem Code einen Fehler in meinem Code). Insbesondere habe ich dieses Verhalten aus der Dokumentation unter https://docs.python.org/3/library/stdty ... tr.replace nicht erwartet. Irgendeine Erklärung dafür, warum dies passiert / irgendetwas, das mir hätte geben sollen, dass dies das erwartete Verhalten ist? Es sieht so aus, als würde ersetzt < /code> funktioniert nicht mit aufeinanderfolgenden überlappenden Wiederholungen des Musters, aber dies war für mich aus der Dokumentation nicht offensichtlich? Der Regexp funktioniert gut. < /P>
Ich bin immer noch verwirrt. In dem oberen offiziellen Dokument, das oben verlinkt ist, heißt es: < /p>
"Zurück eine Kopie der Zeichenfolge mit allen Vorkommen des Substring -Olds ersetzt durch Neue. Wenn die Anzahl angegeben wird, werden nur die ersten Zählvorkommen ersetzt. Wenn die Anzahl nicht angegeben ist, oder -1, dann werden alle Vorschläge ersetzt." (Oder fehlt mir etwas?).