需要使用正则表达式从文本(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模块,它确实支持重复捕获组。