使用python解析JSON循环中的文件
我有一个我正在解析数据的地方,下面是我尝试过但没有锻炼过的地方使用python解析JSON循环中的文件,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我有一个我正在解析数据的地方,下面是我尝试过但没有锻炼过的地方 response = requests.post('https://satest.com', headers=headers, data=data) response1=response.json() print(response1[0].evtName) for value in response1: if value['evtName'] = re.match(r'\b(\w*TY-AB12\w*)\b', "T
response = requests.post('https://satest.com', headers=headers, data=data)
response1=response.json()
print(response1[0].evtName)
for value in response1:
if value['evtName'] = re.match(r'\b(\w*TY-AB12\w*)\b', "TY-AB12"): #I want to loop in json Exactly match the evtName with TY-AB12
print(response1[value]['evtName'])
目标:通过json循环并输出evtName
、evt
和PG
的所有值,这些值在evtName
中关联TY-AB12
(TY-AB12示例app2 url)
有人能在这里帮助我们如何继续吗。Simple soution
如果您想要所有项目,它们的evtName
在evtName
中以TY-AB12
开头,只需查找基本字符串包含项即可
values = response1["data"]
for value in values:
if value['evtName'].startswith('TY-AB12'):
print(value)
{'evt': 85, 'evtName': 'TY-AB12 sample app1 url', 'Config': {'CG': 'TTFG', 'PG': '0002'}}
{'evt': 86, 'evtName': 'TY-AB12 sample app2 url', 'Config': {'CG': 'TTFG', 'PG': '0000'}}
选择:
包含模式:evtName
如果值['evtName']中的'TY-AB12':
匹配正则表达式:evtName
(如果重新匹配('TY-AB12',值['evtName']):
也存在)fullmatch
给定一个
响应1
,即
response1 = {
"name": "testappsa",
"data": [{"evt": 85, "evtName": "TY-AB12 sample app1 url", "Config": {"CG": "TTFG", "PG": "0002"}},
{"evt": 85, "evtName": "TY-AB34 sample app1 url", "Config": {"CG": "TTKL", "PG": "0006"}},
{"evt": 86, "evtName": "TY-AB12 sample app2 url", "Config": {"CG": "TTFG", "PG": "0000"}},
{"evt": 88, "evtName": "TY ALL - TY-AB12ALL app3 url", "Config": {"CG": "TFFY", "PG": "000"}}]
}
单音
如果您想要所有项目,它们的evtName
在evtName
中以TY-AB12
开头,只需查找基本字符串包含项即可
values = response1["data"]
for value in values:
if value['evtName'].startswith('TY-AB12'):
print(value)
{'evt': 85, 'evtName': 'TY-AB12 sample app1 url', 'Config': {'CG': 'TTFG', 'PG': '0002'}}
{'evt': 86, 'evtName': 'TY-AB12 sample app2 url', 'Config': {'CG': 'TTFG', 'PG': '0000'}}
选择:
包含模式:evtName
如果值['evtName']中的'TY-AB12':
匹配正则表达式:evtName
(如果重新匹配('TY-AB12',值['evtName']):
也存在)fullmatch
给定一个
响应1
,即
response1 = {
"name": "testappsa",
"data": [{"evt": 85, "evtName": "TY-AB12 sample app1 url", "Config": {"CG": "TTFG", "PG": "0002"}},
{"evt": 85, "evtName": "TY-AB34 sample app1 url", "Config": {"CG": "TTKL", "PG": "0006"}},
{"evt": 86, "evtName": "TY-AB12 sample app2 url", "Config": {"CG": "TTFG", "PG": "0000"}},
{"evt": 88, "evtName": "TY ALL - TY-AB12ALL app3 url", "Config": {"CG": "TFFY", "PG": "000"}}]
}
您可以循环所有事件并检查evtName是否包含TY-AB12。如果有,那么只需打印您感兴趣的值
导入json
以open('test.dat')作为测试数据:
json\u data=json.load(测试数据)
对于json_数据中的事件:
如果事件['evtName']中的'TY-AB12':
打印(事件['evt']、事件['evtName']、事件['Config']['PG'])
输出
85 TY-AB12 sample app1 url 0002
86 TY-AB12 sample app2 url 0000
88 TY ALL - TY-AB12ALL app3 url 000
您可以循环所有事件并检查evtName是否包含TY-AB12。如果有,那么只需打印您感兴趣的值
导入json
以open('test.dat')作为测试数据:
json\u data=json.load(测试数据)
对于json_数据中的事件:
如果事件['evtName']中的'TY-AB12':
打印(事件['evt']、事件['evtName']、事件['Config']['PG'])
输出
85 TY-AB12 sample app1 url 0002
86 TY-AB12 sample app2 url 0000
88 TY ALL - TY-AB12ALL app3 url 000
我不能使用start with,因为如果您注意到JSON,那么在预期的输出
TY ALL-TY-AB12ALL-app3 url中应该有另一个evtName,那么regex是更好的选择吗?我猜在这种情况下,只要使用inif I dojson\u data=json.load(test\u data)
它会给出错误作为返回加载(fp.read(),AttributeError:'dict'对象没有属性'read'
这是在图中,我正在加载json数据。您已经有了json_数据,所以您只需在响应中执行for event in response1:
,因为您已经有了json对象。您可以忽略for循环之前的行。是否需要执行此步骤?response1=response.json()
因为如果我像你说的那样直接使用response1
它会给我错误类型错误:字符串索引必须是整数
我不能使用start with,因为如果你注意到JSON,那么在预期输出中应该有另一个evtNameTY ALL-TY-AB12ALL app3 url
那么regex会是一个更好的选择吗?我猜在这种情况下,只要使用inif I dojson\u data=json.load(test\u data)
它会给出错误作为返回加载(fp.read(),AttributeError:'dict'对象没有属性'read'
这是在图中,我正在加载json数据。您已经有了json_数据,所以您只需在响应中执行for event in response1:
,因为您已经有了json对象。您可以忽略for循环之前的行。是否需要执行此步骤?response1=response.json()
因为如果我像你说的那样直接使用response1
它会给我错误TypeError:string索引必须是整数
No我没有dict元素,这就是为什么我使用response1=response.json()
我的响应看起来像这样,我应该如何对此进行迭代???@Thomas您可能了解dict是什么,您只需要使用“数据”键来获取值查看我的editNo我没有dict元素,这就是为什么我这样做response1=response.json()
我的回答是这样的,我应该如何对此进行迭代???@Thomas您可能知道dict是什么,您只需要使用“data”键来获取我编辑的值