Python-regex从JSON文本获取动态用户名

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":"

我试图从一堆JSON中提取'login'的值,JSON的格式是文本(response.text)

下面是字符串:

{
   "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"