如何在python中解析列表中的项

如何在python中解析列表中的项,python,parsing,arraylist,Python,Parsing,Arraylist,如何在python中解析列表中的项目 我需要从以下位置获取主机名: {'Key':'Name','Value':'HOSTNAME'} tag = [{'Key': 'Backup Initiator Rule', 'Value': 'Daily-6d-retention'}, {'Key': 'delete_On', 'Value': '2019-08-31'}, {'Key': 'Backup_Type', 'Value': 'Demo'},

如何在python中解析列表中的项目

我需要从以下位置获取主机名:
{'Key':'Name','Value':'HOSTNAME'}

tag = [{'Key': 'Backup Initiator Rule', 'Value': 'Daily-6d-retention'}, 
        {'Key': 'delete_On', 'Value': '2019-08-31'},
        {'Key': 'Backup_Type', 'Value': 'Demo'},
        {'Key': 'Name', 'Value': 'HOSTNAME'},
        {'Key': 'Disaster_Recovery', 'Value': 'Full'}]
Regex

由于这是不可解析的json,我选择正则表达式:

import re
re.findall("{'Key': 'Name', 'Value': '(.*?)'}", tag)
这将返回找到的所有对象的列表:

['HOSTNAME']
EditOP更改了标记字符串,现在这可能不是最好的选择。

Regex

for dict in tag:
    if dict['Key'] == 'Name':
        hostname = dict['Value']
        break
由于这是不可解析的json,我选择正则表达式:

import re
re.findall("{'Key': 'Name', 'Value': '(.*?)'}", tag)
这将返回找到的所有对象的列表:

['HOSTNAME']

EditOP更改了标记字符串,现在这可能不是最好的选择。

试试列表Comp

for dict in tag:
    if dict['Key'] == 'Name':
        hostname = dict['Value']
        break
tag = "[{'Key': 'Backup Initiator Rule', 'Value': 'Daily-6d-retention'}, {'Key': 'delete_On', 'Value': '2019-08-31'},{'Key': 'Backup_Type', 'Value': 'Demo'},{'Key': 'Name', 'Value': 'HOSTNAME'},{'Key': 'Disaster_Recovery', 'Value': 'Full'}]"

print([dic['Value'] for dic in eval(tag) if dic['Key']=='Name'])

结果:['HOSTNAME']

尝试列表组件

tag = "[{'Key': 'Backup Initiator Rule', 'Value': 'Daily-6d-retention'}, {'Key': 'delete_On', 'Value': '2019-08-31'},{'Key': 'Backup_Type', 'Value': 'Demo'},{'Key': 'Name', 'Value': 'HOSTNAME'},{'Key': 'Disaster_Recovery', 'Value': 'Full'}]"

print([dic['Value'] for dic in eval(tag) if dic['Key']=='Name'])

结果:['HOSTNAME']

get
tag[“Tags”]
然后扫描列表,查找Key==Name的字典。首先对它使用
ast.literal\u eval
,因为它似乎是一个字符串。这似乎是一个写入字符串的python字典。为什么?你能改变吗?但是这个字符串包含一个“datetime.datetime”调用<代码>'StartTime':datetime.datetime(2019,8,28,13,56,8269000,tzinfo=tzutc()),我希望这不是一个datetime对象的字符串表示的调用,变量标记的类型是类'list'get
tag[“Tags”]
然后扫描列表以查找Key==Name的字典。首先对它使用
ast.literal\u eval
,因为它似乎是一个字符串。这似乎是一个写入字符串的python字典。为什么?你能改变吗?但是这个字符串包含一个“datetime.datetime”调用<代码>'StartTime':datetime.datetime(2019,8,28,13,56,8269000,tzinfo=tzutc()),我希望这不是一个datetime对象的字符串表示的调用变量标记的类型是类“列表”,如果变量“标记”的类型是
类“列表”
标记=[{'Key':'Backup Initiator Rule','Value':'Daily-6d-retention'},{'Key':'delete_On','Value':'2019-08-31'},{'Key':'Backup_Type','Value':'Demo'},{'Key':'Name','Value':'HOSTNAME'},{'Key':'灾难恢复','Value':'Full'}只需更改“eval(标签)”如果变量“tag”的类型是
class'list'
tag=[{'Key':'Backup Initiator Rule','Value':'Daily-6d-retention'},{'Key':'delete_On','Value':'2019-08-31'},{'Key':'Backup_type','Value':'Demo'},{'Key':'Name','Value':'Value':'HOSTNAME':'HOSTNAME'},{'Key':'灾难恢复','Value':'Full'},只需更改即可“eval(tag)”来标记。我指的是列表
我指的是列表