Ich habe den nächsten Ausdruck:Wenn dann sonst in XPath 1.0
population = tree.xpath('(//tr/td/b/a[contains(text(), "Population")]/../../following-sibling::td/span/following-sibling::text())[1] or'
'//tr/td/b/a[contains(text(), "Population")]/../../following-sibling::td/span/text())
die 'True' zurück.
Wenn ich "|" verwende anstelle von 'oder' kombiniert es Werte der 1. und 2. Pfade, wie diese ['11 061 886', '▼']
.
Wie die Logik machen wie:
If the 1st path exists:
get the 1st value
elif the 2nd path exists:
get the 2nd value
else:
pass
?
Ich verstehe, dass dies einfach ist, kann aber nicht die Antwort finden.
Michael, danke für die Antwort verwenden können. Ich habe eine kleine Frage. Wenn ich meinen Ausdruck entsprechend Ihrer Problemumgehung ändere, wird der Ausdruck zu lang (in Ihrem Beispiel 'A' dreimal wiederholt und 'B' zweimal) und ich habe einige Ausdrücke mit bis zu 5 Knoten \ Pfaden. Wäre es kürzer, wenn ich XPath 2.0 Prozessor finde? Wenn ja, könnten Sie die v2.0-Implementierung bereitstellen? Danke nochmal. – TitanFighter
Ja, das ist in XPath 2.0 viel einfacher. Es gibt eine ganze Reihe von XPath 2.0-Implementierungen (vor allem, wenn Sie XQuery 1.0 verwenden, das eine Obermenge von XPath 2.0 ist), aber es gibt einige Umgebungen (z. B. PHP oder Python), die nicht gut bedient werden Plattform. –
meine Plattform ist Python – TitanFighter