2016-06-20 1 views
-1

16 진수 문자 \ x0a를 포함하는 xml 파일이 있습니다. 내가 파이썬에서 \ n과 같은 적절한 유니 코드 문자로 변환하고 싶다.python 파이썬에서 x0a가 아니라 x0a를 포함하는 파일 읽기 \

파일을 읽으려고 할 때마다 백 슬래시 문자가 이스케이프됩니다. 내 파일의 내용이 문자열의 표현이 나오는 파일을 읽은 후

get EtqLt5fwmRBE\x0a 

그런 다음

get EtqLt5fwmRBE\\x0a 

수 있습니다하지만 내가 원하는 것은 \n

\x0a을 변환하는 것입니다 내가 예를 들어

파일에 \x0a이 없습니다. 다른 문자들도 있습니다. 예를 들어 파일에서 라인의 repr() 중 하나는 위의

|12|5| 
+0

'repr()'결과를 출력하고 있습니까? 컨테이너를 인쇄 할 때도 마찬가지입니다. '\\ x0a'는 문자''\'','x','0','a' 문자입니다. 그냥 그 시퀀스를'\ n'으로 바꾸시겠습니까? –

+0

만약 내가 repr없이 출력한다면 내용은'get EtqLt5fwmRBE \ x0a'입니다. – user2823667

+0

EtqLt5fwmRBE \ n을 얻기 위해 그것을 변환하는 방법이 있습니까? – user2823667

답변

6

당신은 string_escape을 통해 텍스트를 실행할 수 있습니다 때문이다 (단 파이썬 (2), bytestring 생산)

\\x7c12\\x7c5\\x7c\\x0a 

예상 출력 (또는 unicode_escape을 파이썬 2와 3, 유니 코드 문자열 생성) 코덱.

당신이 당신의 파이썬 버전에 따라 적용하는 방법 (2 또는 3)과 입력은 바이트 문자열 파이썬 3에서 파이썬 2, str 또는 유니 코드 문자열 (unicode (str 파이썬 3에서 파이썬 2, bytes에서) 인 경우). 당신이 중 하나 바이트 문자열 또는 유니 코드 문자열이있는 경우

파이썬 2 단지 decode()를 호출하면 바이트가있는 경우

fixed = yourstring.decode('unicode_escape') 

파이썬 3에서, bytestring.decode(...)를 사용합니다. 당신은 라틴 1 첫번째로 str, 인코딩이있는 경우 (unicode_escape가 아닌 아스키 코드 포인트를 디코딩하는 것을 사용할 것 같은!) :

fixed = yourstring.encode('latin1').decode('unicode_escape') 

데모 파이썬 2 :

파이썬 3에서
>>> '\\x7c12\\x7c5\\x7c\\x0a'.decode('unicode_escape') 
u'|12|5|\n' 
>>> u'\\x7c12\\x7c5\\x7c\\x0a'.decode('unicode_escape') 
u'|12|5|\n' 

:

>>> b'\\x7c12\\x7c5\\x7c\\x0a'.decode('unicode_escape') 
'|12|5|\n' 
>>> '\\x7c12\\x7c5\\x7c\\x0a'.encode('latin1').decode('unicode_escape') 
'|12|5|\n'