Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要使用正则表达式从文本(python)的json字符串中提取字符串的帮助吗_Python_Json_Regex - Fatal编程技术网

需要使用正则表达式从文本(python)的json字符串中提取字符串的帮助吗

需要使用正则表达式从文本(python)的json字符串中提取字符串的帮助吗,python,json,regex,Python,Json,Regex,大家好,我正试图从一段简单的代码中提取主持人的名字,如下所示: { "_links": {}, "chatter_count": 2, "chatters": { "moderators": [ "nightbot", "vivbot" ], "staff": [], "admins": [], "global_mods": [], "viewers": [] } } 我一直试图用\“版主\”:\s*[(\

大家好,我正试图从一段简单的代码中提取主持人的名字,如下所示:

{
  "_links": {},
  "chatter_count": 2,
  "chatters": {
    "moderators": [
      "nightbot",
      "vivbot"
    ],
    "staff": [],
    "admins": [],
    "global_mods": [],
    "viewers": []
  }
}
我一直试图用\“版主\”:\s*[(\s*\“\w*\”,)\s*]来抓取版主,但没有成功我使用正则表达式而非json解析主要是为了解决这个难题。

moderators = list()
first = re.compile(r'moderators.*?\[([^\]]*)', re.I)
second = re.compile(r'"(.*?)"')

strings = first.findall(string)
for strings2 in strings:
  moderators = moderators + second.findall(strings2)
这应该能奏效

第一个正则表达式提取2个方括号之间的所有内容。第二个正则表达式从中提取字符串

为了便于阅读和写作,我把它分成了两个正则表达式

现在,使用json模块,您可以做一些更简单的事情:

import json
a = json.loads(string)
moderators = a['chatters']['moderators']

您有可以解析的JSON。。。为什么要使用正则表达式?可能是Hi@cricket_007的副本,主要是为了挑战和练习。我不会在JSON上练习正则表达式。它的结构定义良好,并且有更好的工具来获取您想要的数据。如果您阅读本文,它将破坏您的挑战模式:单词版主后跟冒号、空格和左括号,然后是多个非右括号的字符,然后是右括号。您希望捕获非右括号的多个字符。此外,
re
模块不支持重复捕获组,因此,没有一个人可以用来获取版主的特定成员,除非您想编写一个正则表达式,手动重复捕获组,以获得版主可能拥有的成员数量。现在,如果您查找Python3.x的regex模块,它确实支持重复捕获组。