ich eine Funktion bin definieren, die die Anzahl der Zeiten sind XML zählt Tags in einer Zeichenfolge vorhanden, nämlich <>
und </>
. Obwohl ich in der Lage bin, die Strings "anzupassen", kann ich die Anzahl der Übereinstimmungen nicht quantifizieren, um eine numerische count
zurückzugeben. Dies ist meine Funktion:Python 3.6 - Wie findet man Strings in einer for-Schleife?
def tag_count(the_string):
count = 0
for element in the_string:
if '<>' in the_string:
count += 1
return count
elif '</>' in the_string:
count += 1
return count
Das Problem ist, dass für Strings, die sowohl <>
und </>
haben, count
die Anzahl der Male zurückkehren sollte diese Tags während meiner Funktion abgestimmt sind nur count
als 1 wegen der elif
Zustand zurückkehrt . Ich habe versucht, and
in der 3. Zeile einzufügen, aber das gibt mir einen Fehler. Wie summiere ich, wie oft diese Tags übereinstimmen?
move 'return count' aus der for-Schleife –
Ihre' return'-Anweisung befindet sich in Ihrer Schleife. Es gibt also "1" zurück, sobald es das erste Vorkommen gefunden hat. Verschieben Sie 'return' an das Ende, außerhalb der Schleife, um dies zu vermeiden. – MrT
Beachten Sie, dass echte XML-Tags wie ' ... ' oder ' ' aussehen und nicht '<>' oder '>'. Sie benötigen eine andere Art des Abgleichs, um sie zu erfassen. Außerdem zählen Sie Open-Close-Tags als zwei Tags. Eine sinnvolle Implementierung würde wahrscheinlich auch prüfen, ob offene und schließende Tags zueinander passen. Dies würde einen Stapel erfordern. Für einen praktischen Zweck würde ich einen echten XML-Parser nehmen (der in Python enthalten ist) und die Nicht-Text-Knoten in der Baumstruktur rekursiv zählen. –
9000