Da re.sub()
die gesamte modifizierte/unmodifizierte Zeichenfolge zurückgibt, gibt es eine Möglichkeit zu überprüfen, ob re.sub()
den Text erfolgreich geändert hat, ohne die Ausgabe von re.sub()
zu durchsuchen?Wie überprüft man, ob re() in Python erfolgreich ersetzt wurde?
Antwort
Wenn Sie den folgenden Code:
import re
s1 = "aaa"
result = re.sub("a", "b", s1)
Sie überprüfen können, ob der Anruf an Unter gemacht subsitutions durch die ID des Ergebnisses zu vergleichen, wie so S1:
id(s1) == id(result)
oder, das ist das gleiche:
Dies ist, weil Zeichenfolgen in Python unveränderlich sind, also wenn irgendwelche Ersetzungen ar Das Ergebnis ist eine andere Zeichenfolge als das Original (dh die ursprüngliche Zeichenfolge ist unverändert). Der Vorteil der Verwendung der IDs zum Vergleich anstelle des Inhalts der Strings besteht darin, dass der Vergleich eine konstante Zeit anstelle einer linearen ist.
Ich kann die Downvotes nicht verstehen. Ich habe bestätigt, dass es funktioniert. Dies ist sogar dokumentiert: "Wenn das Muster nicht gefunden wird, wird die Zeichenfolge unverändert zurückgegeben". Nun, es wird nicht explizit "das gleiche Objekt" gesagt, also könnte es irgendwann brechen, aber wenn das OP darauf eingestellt ist, Vergleiche zu vermeiden, ist dies das Beste, was wir anbieten können. –
'Re (s1," a "," b ")' macht keinen Sinn im Zusammenhang mit Ihrer Antwort –
Padric, danke ich habe die Antwort geändert, um dies zu reflektieren – Jon
können re.subn
verwenden, die die gleiche Operation wie Unter auszuführen(), aber das Rück ein Tupel (new_string, number_of_subs_made)
Wenn die Anzahl der Modifikation 0
ist d.h. String nicht modifiziert wird.
>>> re.subn('(xx)+', '', 'abcdab')
('abcdab', 0)
>>> re.subn('(ab)+', '', 'abcdab')
('cd', 2)
>>>
Danke Praveen, das gibt Infos über die Modifikation. –
- 1. MySQL Wie überprüft man, ob die Abfrage erfolgreich ausgeführt wurde?
- 2. Python Selenium: Wie überprüft man, ob der WebDriver beendet wurde()?
- 3. Wie überprüft man, ob ein Python-Modul importiert wurde?
- 4. Wie überprüft man, ob WaitHandle gesetzt wurde?
- 5. Wie überprüft man, ob LogWriter eingestellt wurde?
- 6. Wie überprüft man, ob die Entschlüsselung erfolgreich war?
- 7. Wie überprüft man, ob/welche Matplotlibre verwendet wurde
- 8. Wie überprüft man, ob PDF erfolgreich im Browser mit WatiN geöffnet wurde?
- 9. Wie überprüft man, ob in der Tabellenspalte Text angegeben wurde?
- 10. Wie überprüft man, ob die Standardkonfiguration in CI3 geladen wurde?
- 11. Wie überprüft man, ob ein Bild in js zwischengespeichert wurde?
- 12. Wie überprüft man, ob Entität in Doctrine 2 geändert wurde?
- 13. TCLAP: Wie überprüft man, ob ein optionales Kommandozeilenargument angegeben wurde?
- 14. Wie überprüft man, ob die XSLT-Anweisung ausgeführt wurde
- 15. Wie überprüft man, ob ein Objekt initialisiert wurde? Objective-C
- 16. Wie überprüft man, ob ein neues Outlook-Kalenderereignis hinzugefügt wurde?
- 17. Wie überprüft man, ob NSTimer bereits ungültig gemacht wurde
- 18. Wie überprüft man, ob die Ereignisausbreitung gestoppt wurde?
- 19. Wie überprüft man, ob ein Feld deklariert wurde oder nicht?
- 20. PHPMailer - wie überprüft man, ob Adresse (n) hinzugefügt wurde
- 21. Wie man überprüft, ob der Dalvik Cache geändert wurde
- 22. Wie überprüft man, ob eine "lateinit" -Variable initialisiert wurde?
- 23. Wie überprüft man, ob Datensatz existiert mit Python MySqdb
- 24. Wie überprüft man, ob eine Liste in Python leer ist?
- 25. Wie überprüft man, ob die aktuelle Zeit in Python liegt?
- 26. Wie überprüft man, ob ein Objekt in Python iterierbar ist?
- 27. Wie überprüft man, ob eine Variable in Python leer ist?
- 28. Überprüfen, ob die Datei erfolgreich gelöscht wurde
- 29. Überprüfen, ob die Datenbank erfolgreich erstellt wurde
- 30. Wie überprüft man, ob der Python Unit Test in PyCharm gestartet wurde oder nicht?
Warum sollte es nicht richtig ersetzen. Sie können die Zeichenfolge für die Regex mit 're.match()' überprüfen, bevor Sie wissen möchten, ob Übereinstimmungen vorhanden sind. – nipeco
Ich nahm an, die Frage bedeutete: "Wie können Sie sagen, ob re() Ersetzungen macht oder nicht" – Jon
Was wollen Sie eigentlich tun? –