2015-06-14 4 views
1

У меня возникли проблемы с получением файла cookie в словаре с помощью python. Кажется, что все это удалось избежать даже после запуска команды, предоставляемой запросами.Запросы dict из файла cookiejar с экранированными символами

resp = requests.get(geturl, cookies=cookies) 
cookies = requests.utils.dict_from_cookiejar(resp.cookies) 

и это то, что печенье выглядит

{'P-fa9d887b1fe1a997d543493080644610': '"\\050dp1\\012S\'variant\'\\012p2\\012S\'corrected\'\\012p3\\012sS\'pid\'\\012p4\\012VNTA2NjU0OTU4MDc5MTgwOA\\075\\075\\012p5\\012sS\'format\'\\012p6\\012S\'m3u8\'\\012p7\\012sS\'mode\'\\012p8\\012Vlive\\012p9\\012sS\'type\'\\012p10\\012S\'video/mp2t\'\\012p11\\012s."'} 

Есть ли способ, чтобы сделать символы Unescaped в разделе значения Р-fa9d887b1fe1a997d543493080644610 становится спасся и часть самого Dict?

Edit:

Я хотел словарь, чтобы выглядеть примерно так:

{'format': 'm3u8', 'variant': 'corrected', 'mode': u'live', 'pid': u'NTA2NjU0OTU4MDc5MTgwOA==', 'type': 'video/mp2t'} 
+0

Для наглядности вы могли бы разместить то, что вы хотели бы, чтобы словарь выглядел? – ChrisGuest

+0

Написал, как бы мне хотелось. – AndrewD

ответ

3

Вы имеете дело с форматом Python Pickle для сериализации данных. После того, как вы оценили выражение, так что экранированные символы не отображаются, вам нужно загрузить рассол из строки с помощью функции pickle.loads.

>>> import pickle 
>>> import ast 
>>> pickle.loads(ast.literal_eval("'''" + cookies.values()[0] + "'''")[1:-1]) 
{'pid': u'NTA2NjU0OTU4MDc5MTgwOA==', 'type': 'video/mp2t', 'variant': 'corrected', 'mode': u'live', 'format': 'm3u8'} 
+1

Я не знаю, говорил ли кто-нибудь об этом раньше, но ты прекрасна. – AndrewD

+0

Эй вы знаете, как сохранить диплом верхнего уровня в этом случае? Или еще лучше, какая-то документация, описывающая, что именно происходит здесь, ха-ха. Я очень ценю помощь. – AndrewD

+0

Вы имеете в виду '{'P-fa9d887b1fe1a997d543493080644610': {'pid': ...}}'? – ChrisGuest

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