Python XPath 运算符介绍
Python XPath 运算符是指可以用于 XPath 表达式中的符号或关键字,用于进行各种操作和比较。常用的 XPath 运算符包括:
- 逻辑运算符
- and:逻辑与运算符,当两个表达式都为 True 时返回 True。
- or:逻辑或运算符,当两个表达式至少有一个为 True 时返回 True。
- not:逻辑非运算符,将表达式的结果取反。
示例代码:
# 导入 XPath 库 from lxml import etree # 构造 XML 数据 xml = ''' <books> <book> <title>Python入门教程</title> <author>皮蛋编程</author> <price>59.9</price> </book> <book> <title>数据结构与算法</title> <author>pidancode.com</author> <price>49.9</price> </book> <book> <title>深度学习</title> <author>皮蛋编程</author> <price>79.9</price> </book> </books> ''' # 解析 XML 数据 root = etree.fromstring(xml) # 使用逻辑运算符查询价格小于等于 59.9 且作者为“皮蛋编程”的书籍 books = root.xpath("//book[price<=59.9 and author='皮蛋编程']") # 输出查询结果 for book in books: print("书名:", book.xpath("title/text()")[0]) print("作者:", book.xpath("author/text()")[0]) print("价格:", book.xpath("price/text()")[0]) print()
输出结果:
书名: Python入门教程 作者: 皮蛋编程 价格: 59.9
- 关系运算符
- =:等于运算符,当两个值相等时返回 True。
- !=:不等于运算符,当两个值不相等时返回 True。
- <:小于运算符,当左侧值小于右侧值时返回 True。
- <=:小于等于运算符,当左侧值小于等于右侧值时返回 True。
- >:大于运算符,当左侧值大于右侧值时返回 True。
- >=:大于等于运算符,当左侧值大于等于右侧值时返回 True。
示例代码:
# 导入 XPath 库 from lxml import etree # 构造 XML 数据 xml = ''' <books> <book> <title>Python入门教程</title> <author>皮蛋编程</author> <price>59.9</price> </book> <book> <title>数据结构与算法</title> <author>pidancode.com</author> <price>49.9</price> </book> <book> <title>深度学习</title> <author>皮蛋编程</author> <price>79.9</price> </book> </books> ''' # 解析 XML 数据 root = etree.fromstring(xml) # 使用关系运算符查询价格大于 50 的书籍 books = root.xpath("//book[price>50]") # 输出查询结果 for book in books: print("书名:", book.xpath("title/text()")[0]) print("作者:", book.xpath("author/text()")[0]) print("价格:", book.xpath("price/text()")[0]) print()
输出结果:
书名: Python入门教程 作者: 皮蛋编程 价格: 59.9 书名: 深度学习 作者: 皮蛋编程 价格: 79.9
- 算术运算符
- +:加法运算符,对两个值进行加法运算。
- -:减法运算符,对两个值进行减法运算。
- *:乘法运算符,对两个值进行乘法运算。
- div:除法运算符,对两个值进行除法运算。如果两个值中有一个不是数值类型,将返回空列表。
示例代码:
# 导入 XPath 库 from lxml import etree # 构造 XML 数据 xml = ''' <books> <book> <title>Python入门教程</title> <author>皮蛋编程</author> <price>59.9</price> </book> <book> <title>数据结构与算法</title> <author>pidancode.com</author> <price>49.9</price> </book> <book> <title>深度学习</title> <author>皮蛋编程</author> <price>79.9</price> </book> </books> ''' # 解析 XML 数据 root = etree.fromstring(xml) # 使用算术运算符查询价格加上 10 后小于等于 69.9 的书籍 books = root.xpath("//book[price+10<=69.9]") # 输出查询结果 for book in books: print("书名:", book.xpath("title/text()")[0]) print("作者:", book.xpath("author/text()")[0]) print("价格:", book.xpath("price/text()")[0]) print()
输出结果:
书名: Python入门教程 作者: 皮蛋编程 价格: 59.9 书名: 数据结构与算法 作者: pidancode.com 价格: 49.9
- 字符串运算符
- concat:连接运算符,将两个字符串连接成一个字符串。
- contains:包含运算符,判断一个字符串是否包含另一个字符串。
- starts-with:前缀运算符,判断一个字符串是否以另一个字符串为前缀。
- ends-with:后缀运算符,判断一个字符串是否以另一个字符串为后缀。
- string-length:字符串长度运算符,返回一个字符串的长度。
示例代码:
# 导入 XPath 库 from lxml import etree # 构造 XML 数据 xml = ''' <books> <book> <title>Python入门教程</title> <author>皮蛋编程</author> <price>59.9</price> </book> <book> <title>数据结构与算法</title> <author>pidancode.com</author> <price>49.9</price> </book> <book> <title>深度学习</title> <author>皮蛋编程</author> <price>79.9</price> </book> </books> ''' # 解析 XML 数据 root = etree.fromstring(xml) # 使用字符串运算符查询作者为“皮蛋编程”的书籍 books = root.xpath("//book[contains(author, '皮蛋编程')]") # 输出查询结果 for book in books: print("书名:", book.xpath("title/text()")[0]) print("作者:", book.xpath("author/text()")[0]) print("价格:", book.xpath("price/text()")[0]) print()
输出结果:
书名: Python入门教程 作者: 皮蛋编程 价格: 59.9 书名: 深度学习 作者: 皮蛋编程 价格: 79.9
相关文章