Seite 1 von 1
XPath-Ausdruck, um substrings zu bestimmen
Verfasst: Samstag 8. Januar 2011, 14:37
von sma
Ich bin noch mit lxml am basteln. Aus diesem HTML möchte ich gerne die IDs ohne Präfix extrahieren:
Code: Alles auswählen
from lxml import html
doc = html.fromstring('<html><a id="x_1"/><a id="x_2"/></html>')
print doc.xpath("//a/@id") #=> ['x_1', 'x_2']
Geht das irgendwie? Mit `substring(//a/@id, 3)` bekomme ich leider nur das erste und nicht alle Ergebnisse zurück. Und mit `//a/substring(@id, 3)` treffe ich leider nicht die richtige Syntax.
Stefan
Re: XPath-Ausdruck, um substrings zu bestimmen
Verfasst: Samstag 8. Januar 2011, 15:02
von Hyperion
Nichts gegen XPath, aber kannst Du das nicht später mit Bordmitteln erledigen? Man muss ja nicht immer alles gleich mit einer Technologie erschlagen. Leider kenne ich mich mit XPath nicht gut genug aus, um Dir da direkt weiterzuhelfen.
Re: XPath-Ausdruck, um substrings zu bestimmen
Verfasst: Samstag 8. Januar 2011, 15:58
von lunar
@sma: Mit XPath 2.0 funktioniert "//a/@id/substring(., 2)" oder "//a/@id/substring-after(., 'x_')". In XPath 1.0 gibt es keine direkte Möglichkeit, Funktionen auf alle Knoten einer Menge anzuwenden. Da libxml und somit auch lxml nur XPath 1.0 beherrscht, musst Du Dir in diesem Fall mit den Mittel von Python helfen:
Was meines Erachtens auch die schönere, weil verständlichere Lösung ist. XPath leistet als Abfragesprache zweifelsohne gute Dienste, aber dabei sollte man es auch belassen.