Может кто-нибудь, пожалуйста, помогите мне, как получить Value
для Key: 'labelnumber'
из строки ниже?
Пробовал манипулировать json и eval, но не повезло.
{'Value': 'infotech', 'Key': 'company'},{'Value': 'printing', 'Key': 'LineofBusiness'},{'Value': 'Non-Prod', 'Key': 'Environment'},{'Value': '1234-5623', 'Key': 'labelnumber'},{'Value': 'globalinfra', 'Key': 'ApplicationName'}
Мне нужно получить значение ключа «labelnumber», которое равно «1234-5623».
Эта строка взята из словаря
d1 = {'Name': 'Maintags', 'Type': 'String', 'Value': "{'Value': 'infotech', 'Key': 'company'},{'Value': 'printing', 'Key': 'LineofBusiness'},{'Value': 'Non-Prod', 'Key': 'Environment'},{'Value': '1234-5623', 'Key': 'labelnumber'},{'Value': 'globalinfra', 'Key': 'ApplicationName'}"}
>>>print(d1)
{'Name': 'Maintags', 'Type': 'String', 'Value': "{'Value': 'infotech', 'Key': 'company'},{'Value': 'printing', 'Key': 'LineofBusiness'},{'Value': 'Non-Prod', 'Key': 'Environment'},{'Value': '1234-5623', 'Key': 'labelnumber'},{'Value': 'globalinfra', 'Key': 'ApplicationName'}"}
>>>print(type(d1))
<class 'dict'>
>>>print(d1["Value"])
{'Value': 'infotech', 'Key': 'company'},{'Value': 'printing', 'Key': 'LineofBusiness'},{'Value': 'Non-Prod', 'Key': 'Environment'},{'Value': '1234-5623', 'Key': 'labelnumber'},{'Value': 'globalinfra', 'Key': 'ApplicationName'}
Непонятно, что вы здесь показали и что пробовали. Пожалуйста, предоставьте четкий минимальный воспроизводимый пример
Обновлено с полной информацией .. извините за путаницу.
Итак, у вас здесь нет JSON... Правильным решением было бы исправить то, как вы создаете d1
(почему первое значение должно быть строкой? Может быть, это список?). В противном случае вы можете использовать группу регулярных выражений для поиска каждого объекта {'Value': ?, 'Key': ?}
(поскольку разделение на запятые также не сработает)
d1 = {'Name': 'Maintags', 'Type': 'String', 'Value': "{'Value': 'infotech', 'Key': 'company'},{'Value': 'printing', 'Key': 'LineofBusiness'},{'Value': 'Non-Prod', 'Key': 'Environment'},{'Value': '1234-5623', 'Key': 'labelnumber'},{'Value': 'globalinfra', 'Key': 'ApplicationName'}"}
my_values_dict = {d['Key']:d['Value'] for d in eval(d1['Value'])}
print(my_values_dict['labelnumber'])
вывод: 1234-5623
Используйте eval(), чтобы получить кортеж словарей, прокрутите его, чтобы превратить его в один словарь, получите доступ к нужному ключу.
Большое спасибо JLeno46 .. ваше решение отлично работает. Ценю вашу помощь !
То, что вы показали, недопустимо в формате JSON, поскольку в нем не используются двойные кавычки. Является ли
string1
переменной, которая содержит это значение? Если да, я подозреваю, что это список, не могли бы вы добавить выводprint(type(string1))
к своему вопросу?