嗨,我想从这样的简单代码中提取主持人名称:

{
  "_links": {},
  "chatter_count": 2,
  "chatters": {
    "moderators": [
      "nightbot",
      "vivbot"
    ],
    "staff": [],
    "admins": [],
    "global_mods": [],
    "viewers": []
  }
}


我一直在尝试使用\“ moderators \”:\ 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个方括号之间的所有内容。第二个正则表达式从中提取字符串。

为了便于阅读和易于编写,我将其分解为2个正则表达式

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

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

09-25 10:31