2015-05-06 6 views
2

Я получаю словарь как следующий,Удалить кавычки в питона словаре

{'members': '{"mgt.as.wso2.com": 4100,"as.wso2.com": 4300}', 'subdomain': 'mgt'} 

В ключевых элементах значение передается в двух одинарных кавычках. Есть ли способ удалить эти одинарные кавычки. Я хочу словарь, как следующий,

{'members': {"mgt.as.wso2.com": 4100,"as.wso2.com": 4300}, 'subdomain': 'mgt'} 
+1

Эти словари идентичны, не так ли? – ohruunuruus

+0

Вы хотите использовать _print_ словарь в формате второго примера? Потому что сами словари одинаковы. Или вы хотите анализировать словарь? –

+0

№. Первый содержит 'участников': '{"mgt.as.wso2.com": 4100, "as.wso2.com": 4300}' Мне нужно, как показано ниже, без одинарных котировок пользователей: {"mgt.as.wso2.com": 4100, "as.wso2.com": 4300} –

ответ

6

Вычислить значение строки с literal_eval, а затем назначить его обратно ключ:

>>> import ast 
>>> d['members'] = ast.literal_eval(d['members']) 
>>> d['members']['as.wso2.com'] 
4300 
+0

это сработало! большое спасибо –

1
import ast 
d = {'clustering': 'true', 
'http_proxy_port': '80', 
'https_proxy_port': '443', 
'localmemberhost': '127.0.1.1', 
'localmemberport': '4100', 
'members': '{"mgt.as.wso2.com": 4100,"as.wso2.com": 4300}', 
'portoffset': '1', 
'stratos_instance_data_mgt_host_name': 'mgt.as.wso2.com', 
'stratos_instance_data_worker_host_name': 'as.wso2.com', 
'subdomain': 'mgt'} 

print d 
for k, v in d.items(): 
    if v[0] == '{' and v[-1] == '}': 
     d[k] = ast.literal_eval(v) 

print d 
+2

Я бы выбрал 'ast.literal_eval()' вместо 'eval()'. – TigerhawkT3

+0

@ TigerhawkT3 yup, вы правы, я не знал об этом (исправлено) –

Смежные вопросы