2017-11-08 3 views
1

!txt 파일의 바이트 문자열 디코드 - Python 3

나는 대답을 찾고 있었지만 아무 소용이 없었다 ... 어쨌든, 나는 멍청한 ndarray를 가지고 있었고, 그것을 ndarray.tostring()과 함께 txt 파일에 저장했다. 그래서 지금 내 파일에 저장했다. 나는

"b'\xae\xc9\x91\xff\x9d\x12\xac\xbf\xeasz\xfal\t\xba\xbf\xa18x\xf1\x1bF'" 

지금 나는 내가 ndarray.fromstring (BYTE_STRING)를 적용 할 수있는 디코딩 할 물건처럼있다.

어떻게하면됩니까? 나는 이미 바이트 (byte_string, 'utf-8')를 사용한 다음 디코드하고 b와 '등을 제거합니다 ...

고마워요!

EDIT : 레코드의 경우 솔루션은 b = ast.literal_eval (byte_string)을 사용하고있었습니다. 고마워, 앤디!

+0

이 유효한 UTF-8 ... –

답변

1

아마 당신은 바이트에서 직접 디코딩 할 :

In [11]: b = b'\xae\xc9\x91\xff\x9d\x12\xac\xbf\xeasz\xfal\t\xba\xbf\xa18x\xf1\x1bF' 

In [12]: np.fromstring(b, dtype=np.uint8) 
Out[12]: 
array([174, 201, 145, 255, 157, 18, 172, 191, 234, 115, 122, 250, 108, 
     9, 186, 191, 161, 56, 120, 241, 27, 70], dtype=uint8) 
+0

이 바이트는 utf-8이 유효하지 않기 때문에 주로 말합니다 (디코딩하지 않습니다) –

+0

텍스트 파일에 이미 "b '\ xae \ xc9 \ x91 \ xff \ x9d \ x12 \ xac \ xbf \ xeasz \ xfal \ t \ xba \ xbf \ xa18x \ xf1 \ x1bF ' "변수에 저장하면 BYTES 개체가 아니라 문자열로 저장됩니다. –

+0

@ david 'b = ast.literal_eval (open (file_name) .read())'을 사용하여 바이트로 읽을 수 있습니다. –

1

문자열은 BYTE 개체입니다. str(b'','utf8')

+0

없는 나는 그것이 UTF-8' – yash

+0

문제는 그에'이 될 것으로 판단 텍스트 파일은 이미 "b '\ xae \ xc9 \ x91 \ xff \ x9d \ x12 \ xac \ xbf \ xeasz \ xfal \ t \ xba \ xbf \ xa18x \ xf1 \ x1bF'"형식으로 저장됩니다. 변수는 BYTES 객체로 저장하지 않고 문자열로 저장합니다. –