2016-07-04 3 views
0
a = b'\x00\x01' 
ra = repr(a) # ra == "b'\\x00\\x01'" 
assert invert_repr(ra) == a 

올바른 invert_repr 형식은 무엇입니까? string_escape & unicode_escape?python3에서 바이트 repr()의 반전 연산은 무엇입니까?

+1

당신이'에 repr()'에는 직렬화하고 unserialise 데이터를 사용하고 있습니까? 그러지 않으면, 파이썬 구문은 직렬화 형식이 아닙니다. 대신 pickle, marshall 또는 json을 사용하십시오. –

답변

3

사용 eval 또는 동급 :

from ast import literal_eval 
a = b'\x00\x01' 
ra = repr(a) 
assert literal_eval(ra) == eval(ra) == a # no error 

ast.literal_eval is safer than eval.

+0

네,하지만 정말 느립니다. 문자열 기반 작업을 제공 할 수 있습니까? – ShenLei

+2

@ShenLei : 아니요, 다른 옵션은 없습니다. 파이썬 바이트 문자열 리터럴을 가지고 있습니다. 다시 해석 할 수있는 옵션입니다. 왜 이것을 필요로합니까? –

+0

텍스트 파일에서 데이터를 읽고 repr()을 사용하여 실패한 디코딩 컨텐츠를 다른 파일에 인쇄했기 때문에. 이제는 후자를 처리하려고합니다. – ShenLei

관련 문제