在Python中使用jsonpath-ng的split扩展时如何返回多个属性?
如何在jsonpath-ng.ext中同时提取多个属性并对字段使用split扩展
正确写法示例
要同时提取多个属性并对name字段使用split扩展,需要将带扩展函数的表达式用括号包裹,让解析器正确识别语法结构:
from jsonpath_ng.ext import parse event = {'name': 'team1 - team2', 'competitionId': 19790, 'sportId': 3} # 修正后的JSONPath表达式 jsonpath_expression = parse("$.[sportId, competitionId, (name.`split(-, 0, -1)`)]") # 提取结果 matches = jsonpath_expression.find(event) result = [match.value for match in matches] print(result) # 输出: [3, 19790, 'team1 ']
错误原因
原表达式$.[sportId, dateTime, name.split(-, 0, -1)]报错,是因为jsonpath-ng.ext的解析器在处理多属性选择数组时,无法直接识别链式调用的扩展函数语法。用括号包裹name.split(...)``后,解析器能明确区分每个属性项的边界,正确解析带扩展函数的表达式。
可选写法(显式字段引用)
也可以通过显式的字段引用方式实现,效果一致:
jsonpath_expression = parse("$.[sportId, competitionId, $['name'].`split(-, 0, -1)`]")
内容的提问来源于stack exchange,提问作者sierra_papa
相关产品推荐
相关产品推荐

