2016-09-25 1 views
1

, 파이썬 오류가 나는 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 

내가 '='와 다른 마법을 추가하는 몇 가지 제안을 본 적이 있지만, 그냥 파일을 열 실패 gzip을 모듈 결과 :

.

어떤 아이디어가 있습니까?

답변

0

나를 위해 일했습니다 (파이썬 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, 내가 잘못된 헤더 체크 –