我有这个嵌套的 JSON
[
"[[Input=[Name=ABC, createDateTime=2019-30-11, RollNumber=9]]]",
"[[SubjectList=[Summer=, Winter=, Autumn=, Spring=, rList=, sList=, additionalList=, emailList=, FoodList=, sAssignmentList=, summerworkList=, outdoorList=, movielist=]]]",
"[ProcessingDate=2018-10-06]",
"[Hobbies=Football]",
"[Phone=Android,,]"
]
如何使用 Python 处理此 JSON 并获取足球值或球数?
这是我尝试过的:
代码
import json
row = '''[
"[[Input=[Name=ABC, createDateTime=2019-30-11, RollNumber=9]]]",
"[[SubjectList=[Summer=, Winter=, Autumn=, Spring=, rList=, sList=, additionalList=, emailList=, FoodList=, sAssignmentList=, summerworkList=, outdoorList=, movielist=]]]",
"[ProcessingDate=2018-10-06]",
"[Hobbies=Football]",
"[Phone=Android,,]"
]'''
row_dict = json.loads(row)
print(row_dict[3])
使用它 - 我得到以下输出:
[Hobbies=Football]
但是我缺少下一级解析以获取 足球 作为输出
最佳答案
这是一种使用 capture
的方法数组中的非 json 字符串。
它假设 [:alnum:]
posix 正则表达式字符类足以匹配 =
之后的值
假设 test.json
$ jq -M '.[] | capture("Hobbies=(?<Hobbies>[[:alnum:]]+)")' test.json
{
"Hobbies": "Football"
}
这是一个可以准确生成 Football
的变体:
$ jq -Mr '.[] | capture("Hobbies=(?<Hobbies>[[:alnum:]]+)") | .Hobbies' test.json
Football
这是一个示例脚本,它使用多个捕获并将它们与add
组合起来。
[ .[]
| capture("Hobbies=(?<Hobbies>[[:alnum:]]+)")
, capture("RollNumber=(?<RollNumber>[[:alnum:]]+)")
] | add
示例执行假设脚本位于 test.jq
$ jq -M -f test.jq test.json
{
"RollNumber": "9",
"Hobbies": "Football"
}
关于json - 使用 jq 或 Python 解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58180768/