일부 코드를 python2에서 python3으로 변환 중입니다.string.decode ('utf8')를 python2에서 python3으로 변환
python2, 나는 다음과 같은 작업을 수행 할 수 있습니다
>>> c = '\xe5\xb8\x90\xe6\x88\xb7'
>>> print c
帐户
>>> c.decode('utf8')
u'\u5e10\u6237'
어떻게 얻을 수 같은 출력 (U '\ u5e10 u6237 \') python3에서?
편집
이 문제와 다른 사람을 위해, 나는 각 문자가 개별 요소로 취급 될 필요가 결과의 사용을 할 수있는 반응보고 후 깨달았다. '\ u5e10 \ u6237'와 같은 이스케이프 된 유니 코드 표현은 문자열이므로 자연스럽게 원래 중국어 문자에 해당하는 부분으로 나뉘 지 않습니다.
>>> c = '帐户'
>>> type(c.encode('unicode-escape').decode('ascii'))
<class 'str'>
>>> [l for l in c.encode('unicode-escape').decode('ascii')]
['\\', 'u', '5', 'e', '1', '0', '\\', 'u', '6', '2', '3', '7']
당신은 입력 문자열의 각 문자를 분리하고 프로그램의 다음 부분에 다시 구문 분석하지 않으려면 배열로 별도로 번역해야합니다. 내 솔루션 따라서이었다
>>> [l.encode('unicode-escape').decode('ascii') for l in c]
['\\u5e10', '\\u6237']
대체 솔루션은 진수 표현으로 각 문자를합니다 도움을
>>> [hex(ord(l)) for l in c]
['0x5e10', '0x6237']
감사합니다.
는 개인적으로 그 기능을 써서 'DEF get_unicode_code (텍스트) 결과 ='.join ( CHAR 경우 ORD (숯) <128 다른 '\\ U'+ 포맷 (ORD 샤아 , 'x') 문자로 된 )' –
@JonathanHartley 내 코드를 수정 해 주셔서 감사합니다. 이 함수는 Dean의 마지막 줄'd.encode ('unicode-escape')와 동일한 것을 반환합니다. decode ('ascii')' 괄호 오류를 수정하고 함수에 원하는 결과를주기위한 코드를 추가했습니다. 형식은 int를 16 진수 값으로 변환합니다.이 값은 유니 코드를 수동으로 생성하는 데 사용됩니다. – HolyDanna
감사합니다. 지금 받으십시오! –