Can not use translate() method in xpath with lxml etree
Question:
I want to use translate to lower my text with lxml library in Python. My code is as below
r = element.xpath('./a/translate(text(), "A", "a")')
But it give me an exception:
lxml.etree.XPathEvalError: Invalid expression
I’d like to do this with xpath only (without writing code in Python). Please give me a solution. Thanks
Answers:
You may try following code by wrapping up the translate outside
from lxml import etree
xml = '''<root>
<a>A TEXT CONTENT</a>
</root>'''
root = etree.fromstring(xml)
element = root.xpath('translate(./a/text(), "A", "a")')
print(element)
Result
a TEXT CONTENT
You can also specify more translation rules
element = root.xpath('translate(./a/text(), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")')
Result
a text content
I want to use translate to lower my text with lxml library in Python. My code is as below
r = element.xpath('./a/translate(text(), "A", "a")')
But it give me an exception:
lxml.etree.XPathEvalError: Invalid expression
I’d like to do this with xpath only (without writing code in Python). Please give me a solution. Thanks
You may try following code by wrapping up the translate outside
from lxml import etree
xml = '''<root>
<a>A TEXT CONTENT</a>
</root>'''
root = etree.fromstring(xml)
element = root.xpath('translate(./a/text(), "A", "a")')
print(element)
Result
a TEXT CONTENT
You can also specify more translation rules
element = root.xpath('translate(./a/text(), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")')
Result
a text content