이 장에서는 Python 문자열 작성 및 처리에 대해 소개합니다. 그 전에, 번거로운 문자 인코딩 문제를 파악한 후 Python 문자열을 다시 공부하겠습니다.
최신 Python 3 버전에서는 문자열이 유니코드로 인코딩됩니다. 즉, Python의 문자열은 다음과 같은 여러 언어를 지원합니다.
>>> print('包含中文的str') 包含中文的str
단일 문자의 경우 encoding, Python ord() 문자의 정수 표현을 얻기 위해 함수가 제공되며 chr() 함수는 인코딩을 해당 문자로 변환합니다.
>>> ord('A') 65 >>> ord('中') 20013 >>> chr(66) 'B' >>> chr(25991) '文'
문자의 정수 인코딩을 알고 있으면 다음과 같이 str을 16진수로 쓸 수도 있습니다. :
>>> '\u4e2d\u6587' '中文'
두 가지 글쓰기 방식은 완전히 동일합니다.
Python의 string 유형은 str이므로 메모리에서는 유니코드로 표현되고 한 문자는 여러 바이트에 해당합니다. 네트워크를 통해 전송하거나 디스크에 저장하려면 str을 바이트 단위로 변경해야 합니다.
Python은 바이트 유형 데이터를 나타내기 위해 작은 따옴표나 큰 따옴표를 사용합니다.
x = b'ABC'
'ABC'와 b'ABC'를 구별하는 데 주의하세요. 하지만 후자의 내용은 동일하게 표시됩니다. 전자와 마찬가지로 바이트 단위의 각 문자는 1바이트만 차지합니다.
Unicode로 표현된 Str은 encode() 메서드를 통해 지정된 바이트로 인코딩될 수 있습니다. 예:
>>> 'ABC'.encode('ascii') b'ABC' >>> '中文'.encode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87' >>> '中文'.encode('ascii') Traceback (most recent call last): File "<stdin>", line 1, in <module>UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
순수 영어 str은 ASCII로 바이트로 인코딩될 수 있으며, 내용은 동일하며, 중국어가 포함된 str은 UTF로 인코딩될 수 있습니다. 바이트의 경우 -8입니다. 중국어를 포함하는 Str은 중국어 인코딩 범위가 ASCII 인코딩 범위를 초과하기 때문에 ASCII로 인코딩할 수 없으며 Python은 오류를 보고합니다.
바이트 단위로 ASCII 문자로 표시할 수 없는 바이트는 x##으로 표시됩니다.
반대로 네트워크나 디스크에서 바이트 스트림을 읽는 경우 읽은 데이터는 바이트입니다. 바이트를 str로 변경하려면 decode() 메서드를 사용해야 합니다:
>>> b'ABC'.decode('ascii') 'ABC' >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') '中文'
bytes에 디코딩할 수 없는 바이트가 포함된 경우 decode() 메서드는 오류를 보고합니다.
>>> b'\xe4\xb8\xad\xff'.decode('utf-8') Traceback (most recent call last): ... UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte
위는 Python 문자열 프로그래밍에 문제가 있습니다.
위 내용은 Python 문자열과 관련된 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!