Python-regex从JSON文本获取动态用户名
我试图从一堆JSON中提取'login'的值,JSON的格式是文本(response.text) 下面是字符串:Python-regex从JSON文本获取动态用户名,python,regex,python-3.x,jq,Python,Regex,Python 3.x,Jq,我试图从一堆JSON中提取'login'的值,JSON的格式是文本(response.text) 下面是字符串: { "name":"master", "commit":{ "sha":"adc3208a9ac76262250a", "commit":{ "author":{ "name":"root", "email":"dan.ja@foo.ca", "date":"
{
"name":"master",
"commit":{
"sha":"adc3208a9ac76262250a",
"commit":{
"author":{
"name":"root",
"email":"dan.ja@foo.ca",
"date":"2018-02-26T20:14:41Z"
},
"committer":{
"name":"GitHub Enterprise",
"date":"2018-02-26T20:14:41Z"
},
"message":"Update README.md",
"tree":{
"sha":"3e4710d0e021a0a7",
"comment_count":0,
"verification":{
"verified":false,
"reason":"unsigned",
"signature":null,
"payload":null
}
},
"author":{
"login":"kyle",
"id":5
}
我只是想从最后一行的登录名中提取值“kyle”。“kyle”的值可以更改,因为它每次都可以是不同的登录名。因此,我需要“登录”中的字符串:“字符串”
以下是我现在拥有的,但这只会让我“登录”:
不要使用正则表达式解析JSON,请使用JSON解析器 与: 输入文件: 命令: 或者通过脚本: 输出:
你为什么要用正则表达式呢?为什么不使用
data=response.json()
解析Python,然后执行data['commit']['author']['login']
?使用或将字符串放入Python字典中。如果必须使用正则表达式,请尝试/“login”\s*:\s*(?P.*)/g
。感谢@DanielRoseman您的解决方案行之有效,非常优雅!我从来没想过
/"login"[^\a]*"/g
{
"commit" : {
"commit" : {
"tree" : {
"verification" : {
"payload" : null,
"verified" : false,
"signature" : null,
"reason" : "unsigned"
},
"sha" : "3e4710d0e021a0a7",
"comment_count" : 0
},
"author" : {
"id" : 5,
"login" : "kyle"
},
"committer" : {
"name" : "GitHub Enterprise",
"date" : "2018-02-26T20:14:41Z"
},
"message" : "Update README.md"
},
"sha" : "adc3208a9ac76262250a"
},
"name" : "master"
}
$ jq '.commit.commit.author.login' file.json
#!/usr/bin/env python3
import json
string = """
{
"commit" : {
"commit" : {
"tree" : {
"verification" : {
"payload" : null,
"verified" : false,
"signature" : null,
"reason" : "unsigned"
},
"sha" : "3e4710d0e021a0a7",
"comment_count" : 0
},
"author" : {
"id" : 5,
"login" : "kyle"
},
"committer" : {
"name" : "GitHub Enterprise",
"date" : "2018-02-26T20:14:41Z"
},
"message" : "Update README.md"
},
"sha" : "adc3208a9ac76262250a"
},
"name" : "master"
}
"""
j = json.loads(string)
print(j['commit']['commit']['author']['login'])
"kyle"