2017-01-13 4 views
0

나는 사용자 문장의 압축 및 압축 해제 코드 작업을하고있다. 이 코드 만든 :문장 압축하기

import gzip 
sentence = input(b"Please enter a sentence ") 
varNameIn = (b"sentence") 
varNameOut = gzip.compress(varNameIn) 
print(varNameOut) 
varNameDecon = gzip.decompress(varNameOut) 
print(varNameDecon) 

을하지만 뭔가 잘못된 것 같다. 문장 'GN의 시간 B'\ X1F \ x8b \ X08 \ x00Z \ xedxX \ X02 \ XFF + N \ XCD + I \ xcdKN \ X05 \ x00부터를 입력

b'Please : 그것은으로 넣어 밖으로 작동 \ xd5Nf \ x9d \ X08 \ x00에서 \ x00에서 \ x00부터 ' b'sentence'는 '대신 사용자의 문장과 그것이 B를 않는 이유 문장을 요청 때'b'sentence을 보여 않는 대신 '왜

의 내용을 입력하십시오 ... 나는 b '가 문장의 미래 단계에서 압축하게 만들 것이라고 들었습니다. 도움이 되었습니까? 감사합니다.

+2

어 : 당신이 str 객체로 그를 다시 설정하려는 경우 decode from bytes to str 같은 인코딩을 사용. –

+0

@DanielRoseman : 제 추측 :'sentence' 값을'bytes' 객체로 바꾸려는 시도입니다. –

답변

2

b"sentence"sentencebytes 값으로 변하지 않습니다. 대신 encode a string to bytes해야합니다. 유스 케이스에 맞는 코덱을 선택하십시오. 그것을 bytes 프롬프트를 제공 input() 항상 str 형식을 반환

sentence = input("Please enter a sentence ") 
varNameIn = sentence.encode('utf8') 
varNameOut = gzip.compress(varNameIn) 

하는 것으로되지 않습니다 여기에 인코딩 UTF-8 아마 서양 텍스트의 합리적인 작은 크기, 유니 코드를 모두 인코딩 할 수있는 최선 그것을 바꿔라.

데이터를 다시 압축 해제해도 여전히 bytes 개체가 있습니다. 당신은`B "문장"`으로`varNameIn`을 정의하기 때문에,

varNameDecon = gzip.decompress(varNameOut) 
print(varNameDecon.decode('utf-8')) 
+0

감사합니다! –