2016-09-25 3 views
1

Я пытаюсь распаковать строку base64,питона в декодирования base64 строки

это код, я использую

def unzip_string(s) : 
    s1 = base64.decodestring(urllib.unquote(s)) 
    sio = StringIO.StringIO(s1) 
    gzf = gzip.GzipFile(fileobj=sio) 
    guff = gzf.read() 
    return json.loads(guff) 

Я получаю ошибки Ошибка: Неправильное заполнение

, где я пытаюсь разархивировать ту же строку, используя код node.js, он работает без проблем.

где:

s == H4sIAAAAAAAAA22PW0/CQBCF/8s81wQosdA3TESJhhhb9cHwMN1O6Ybtbt0LhDT97+5yU4yPc+bMnO90YCyyDaSfHRimieQSG4IUaldABC1qbAykHbQsrzWZWokSUumEiMCQ3nJGCy9ADH0EFvWarJ+eHv11v4qgEIptqHyTlovzWes0q9HQ3X87Lh80Msp5gDhqzGlN0or9B1pWU5ldxV72c2/ODg0C7lUXu/U2p8XLpY35+6Mmtsn4WqLILFrnTRUKQxFwk7+fSL23+zX215VD/jE16CeojIzhSi5kpQ6xzVkIz76wuSmHRVINRuVtheMxDuLJJB5Nk5hRMkriaTGJh8MDn5LWv8v3bejzvFjez15/5EsNbuZo7FzpHepyJoTaBWqrHfX9N0/UAJ7qAQAA.bi0I1YDZ3V6AXu6aYTGO1JWi5tE5CoZli7aa6bFtqM4 

Я видел некоторые предложения, чтобы добавить «=» и другой магии, но это только приводит модуль сжатия неисправного, чтобы открыть файл.

любые идеи?

ответ

0

Это сработало для меня (Python 3). Подкладка действительно важна, так как вы уже видели в других ответах:

import base64 
import zlib 
import json 

s = b'H4sIAAAAAAAAA22PW0/CQBCF/8s81wQosdA3TESJhhhb9cHwMN1O6Ybtbt0LhDT97+5yU4yPc+bMnO90YCyyDaSfHRimieQSG4IUaldABC1qbAykHbQsrzWZWokSUumEiMCQ3nJGCy9ADH0EFvWarJ+eHv11v4qgEIptqHyTlovzWes0q9HQ3X87Lh80Msp5gDhqzGlN0or9B1pWU5ldxV72c2/ODg0C7lUXu/U2p8XLpY35+6Mmtsn4WqLILFrnTRUKQxFwk7+fSL23+zX215VD/jE16CeojIzhSi5kpQ6xzVkIz76wuSmHRVINRuVtheMxDuLJJB5Nk5hRMkriaTGJh8MDn5LWv8v3bejzvFjez15/5EsNbuZo7FzpHepyJoTaBWqrHfX9N0/UAJ7qAQAA.bi0I1YDZ3V6AXu6aYTGO1JWi5tE5CoZli7aa6bFtqM4' 

decoded = base64.urlsafe_b64decode(s + b'=') 
uncompressed = zlib.decompress(decoded, 16 + zlib.MAX_WBITS) 
unjsoned = json.loads(uncompressed.decode('utf-8')) 

print(unjsoned) 

zlib.decompress(decoded, 16 + zlib.MAX_WBITS) является немного более компактным способом не-Gzip байт строки.

+0

Вы только что стали моим любимым человеком в Интернете :) –

+0

Отлично. Вы можете принять ответ, если он прав? – bbayles

+0

проблема заключается в том, что теперь функция Zlib терпит неудачу, где s = H4sIAAAAAAAAA81Q0U7CMBT9l/s8E2SEwd4wihIJITL1wfhwae9cQ9fOtoOQZf9uy0SF8AE + Nfec3nPPOQ1Yh2wD6VsDlhkitcCSIIWiXkMEFRosLaQNVCwrDNlCSw6pqqWMwJLZCkYzD8AQ2ggcmg9yfnq8ffDrbXSm6bYnksJmLzdSsw0FhebP2MK5ehR8uiDCKReK + FIoD66990wvCM1cbAObo7TkCS5sJXE/U7n2DxlID8ypyamP0RmE9t2LdceflRPymLGqDSvQ0s0lTqh7g4wyEdJ1GKuNIeXk/hUdK4ivzlJ88 + HyqrucXiqpNnL5P3v6ibAia4VWYfOQoTwCwcgnllf8ep3kvT4f5jgYYC8ejeL + OIkZJf0kHq9HcahDK + e1sn0VTM1ni7vJ0y98kArfhJ2idVNtdmj4REq9C1U4U1PbfgEKKymWwgIAAA ==. QbqL60VQGqBsezVFYSdOKv5ZoX +/68tSu7RSQwmpPcY, я получаю неправильный чек заголовка –

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