python lxml:不区分大小写的xpath标记名称匹配

Boo*_*d16 0 python xpath lxml case case-insensitive

我正在使用python + lxml来解析spss文件。

这个主题上似乎有很多话题,但是答案并没有特别帮助我。

我遇到的答案:

- lower-case the entire input before parsing; 
- if you know the complete list of tags in advance
Run Code Online (Sandbox Code Playgroud)

对我而言,这些建议将花费太多时间。

相反,我只想在必要时匹配字符串。

这是我要编辑的代码行:

xpath("//definition//variable[@name='"+tag_name+"']")
Run Code Online (Sandbox Code Playgroud)

如果tag_name是:

tag_name = "Q1top"
tag_name = "q1Top"
tag_name = "q1TOP"
etc
Run Code Online (Sandbox Code Playgroud)

我猜想某种形式的正则表达式会正常吗???

har*_*r07 5

另外,您可以http://exslt.org/regular-expressions在XPath中从名称空间合并正则表达式,例如:

ns = {"re": "http://exslt.org/regular-expressions"}
query = "//definition//variable[re:test(@name, '^{0}$', 'i')]".format(tag_name)
result = tree.xpath(query, namespaces=ns)
Run Code Online (Sandbox Code Playgroud)