urllib.unquote может сделать это:
>>> urllib.unquote('{%22%22%3A%22test_%E5%93%A6%E4%BA%88%E4%BB%A5%E8%85%BF%E5%93%A6.doc.txt%22%2C%22mimeType%22%3A%22text%2Fplain%22%2C%22compressed%22%3AFalse%7D')
'{"":"test_\xe5\x93\xa6\xe4\xba\x88\xe4\xbb\xa5\xe8\x85\xbf\xe5\x93\xa6.doc.txt","mimeType":"text/plain","compressed":False}'
>>> eval(_)
{'': 'test_\xe5\x93\xa6\xe4\xba\x88\xe4\xbb\xa5\xe8\x85\xbf\xe5\x93\xa6.doc.txt', 'mimeType': 'text/plain', 'compressed': False}
>>> _['']
'test_\xe5\x93\xa6\xe4\xba\x88\xe4\xbb\xa5\xe8\x85\xbf\xe5\x93\xa6.doc.txt'
>>> print _
test_哦予以腿哦.doc.txt
Обратите внимание, что мне пришлось изменить "ложь" на "Ложь" в строке в кавычках.Также, что строка после кавычки все еще в кодировке UTF-8;Вы можете использовать str.decode ('utf8'), чтобы получить строку Unicode, если это то, что вам нужно.
Как упоминает Дж. Бернардо, eval () небезопасных данных - очень плохая идея.Любой, кто знает или даже подозревает, что серверный сценарий является eval () - данные формы могут легко создать POST с помощью команд, которые могут скомпрометировать сервер.Лучше было бы так:
>>> import json, urllib
>>> json.loads(urllib.unquote('{%22%22%3A%22test_%E5%93%A6%E4%BA%88%E4%BB%A5%E8%85%BF%E5%93%A6.doc.txt%22%2C%22mimeType%22%3A%22text%2Fplain%22%2C%22compressed%22%3Afalse%7D'))['']
u'test_\u54e6\u4e88\u4ee5\u817f\u54e6.doc.txt'
>>> print _
test_哦予以腿哦.doc.txt
Также обратите внимание, что этот более поздний подход не требует замены false на False;на самом деле это не сработает, если я сделаю.Об этом заботится пакет json.