Json 过滤一行中包含特定字符串的文本文件,然后在该行中返回另一个字符串

Json 过滤一行中包含特定字符串的文本文件,然后在该行中返回另一个字符串,json,string,python-2.7,filter,Json,String,Python 2.7,Filter,这是我的文本文件team.json 我的问题是我只知道如何返回特定的行, 例如,我选择一个过滤器位置,比如PQ,我如何返回具有PQ位置的名称。提前谢谢 { "members": [ {"name": "John", "location": "QC", "age": 25}, {"name": "Jesse", "location": "PQ", "age": 24}, {"name": "Jez", "location": "PQ", "age": 23},

这是我的文本文件team.json 我的问题是我只知道如何返回特定的行, 例如,我选择一个过滤器位置,比如PQ,我如何返回具有PQ位置的名称。提前谢谢

{
  "members": [
    {"name": "John", "location": "QC", "age": 25},
    {"name": "Jesse", "location": "PQ", "age": 24},
    {"name": "Jez", "location": "PQ", "age": 23},
    {"name": "Ry", "location": "PQ", "age": 22},
    {"name": "Barry", "location": "PQ", "age": 25},
    {"name": "Rikki", "location": "PQ", "age": 35},
    {"name": "Ross", "location": "PQ", "age": 33},
    {"name": "Chiz", "location": "PQ", "age": 25},
    {"name": "Gel", "location": "PQ", "age": 24},
    {"name": "Cherry", "location": "PQ", "age": 22}
  ]
}
这是我的代码,但只返回行

import json
my_data = json.loads(open("team.json.txt").read())

print my_data

for line in open('team.json.txt'):
 if "John" in line:
  print line

解析json数据后,您可以使用它提取PQ位置中的成员:

member_in_pq = [member for member in my_data['members'] \
    if member['location'] == 'PQ']
print(member_in_pq)
# -> [{'age': 24, 'location': 'PQ', 'name': 'Jesse'}, ...]
或者,如果您只需要名称:

member_in_pq = [member['name'] for member in my_data['members'] \
    if member['location'] == 'PQ']
print(member_in_pq)
# -> ['Jesse', 'Jez',..., 'Cherry']

我建议使用已解析的数据版本,而不是返回并手动(再次)解析文件。

使用my_数据对象查找您要查找的数据,而不是在linehello sir中进行字符串比较。。谢谢你的回答也许我应该查一下函数my_data object如果我是对的,它是函数吗?。。我是一个新手,正在努力学习python。请看@hiro protagor在他的回答中到底描述了什么