Json 过滤一行中包含特定字符串的文本文件,然后在该行中返回另一个字符串
这是我的文本文件team.json 我的问题是我只知道如何返回特定的行, 例如,我选择一个过滤器位置,比如PQ,我如何返回具有PQ位置的名称。提前谢谢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},
{
"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在他的回答中到底描述了什么