<h2>修改问题的答案</h2>
<p>让我们来定义你的字典:</p>
<pre><code>>>> d = {"quests ":
... [{
... "title ":"Phite Club",
... "status": "COMPLETED",
... "difficulty": 3,
... "members": True,
... "questPoints": 1,
... "userEligible": True
... },{
... "title": "All Fired Up",
... "status": "COMPLETED",
... "difficulty": 1,
... "members": True,
... "questPoints": 1,
... "userEligible": True
... }]
... }
</code></pre>
<p>要检索您感兴趣的部分:</p>
<pre><code>>>> [y for dd in d.values() for y in dd if y.get('title') == 'All Fired Up']
[{'questPoints': 1, 'title': 'All Fired Up', 'status': 'COMPLETED', 'userEligible': True, 'members': True, 'difficulty': 1}]
</code></pre>
<p>或者,如果你提前知道你要找的是<code>quests</code>:</p>
<pre><code>>>> [y for y in d['quests '] if y.get('title') == 'All Fired Up']
[{'questPoints': 1, 'title': 'All Fired Up', 'status': 'COMPLETED', 'userEligible': True, 'members': True, 'difficulty': 1}]
</code></pre>
<h2>问题原版答案</h2>
<p>让我们定义字符串:</p>
<pre><code>>>> s = '"{"quests":[{"title":"Phite Club","status":"COMPLETED","difficulty":3,"members":true,"questPoints":1,"userEligible":true},{"title":"All Fired Up","status":"COMPLETED","difficulty":1,"members":true,"questPoints":1,"userEligible":true},"'
</code></pre>
<p>让我们提取您想要的部分:</p>
<pre><code>>>> import re
>>> re.findall(r'\{[^}]*All Fired Up[^}]*\}', s)
['{"title":"All Fired Up","status":"COMPLETED","difficulty":1,"members":true,"questPoints":1,"userEligible":true}']
</code></pre>
<p>正则表达式<code>\{[^}]*All Fired Up[^}]*\}</code>匹配<code>All Fired Up</code>及其周围的所有字符,包括前面最近的<code>{</code>和后面的<code>}</code>。你知道吗</p>
<p>[注意,在问题的当前版本中,字典的键<code>quests</code>后面有一个空格<code>quests</code>。上面的代码</p>
<h3>JSON问题</h3>
<p>当我写这个答案时,问题中的字符串是<em>不是</em>有效的JSON。如果在以后的更新中,它被一个有效的JSON字符串替换,那么<a href="https://stackoverflow.com/a/49331124/3030305">Daniel Roseman's answer</a>就变得合适了。你知道吗</p>