>  기사  >  백엔드 개발  >  Python 문자열과 관련된 작업

Python 문자열과 관련된 작업

Tomorin
Tomorin원래의
2018-08-23 17:47:291357검색

이 장에서는 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:
   &#39;ascii&#39; codec can&#39;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&#39;ABC&#39;.decode(&#39;ascii&#39;)
&#39;ABC&#39;
>>> b&#39;\xe4\xb8\xad\xe6\x96\x87&#39;.decode(&#39;utf-8&#39;)
&#39;中文&#39;

bytes에 디코딩할 수 없는 바이트가 포함된 경우 decode() 메서드는 오류를 보고합니다.

>>> b&#39;\xe4\xb8\xad\xff&#39;.decode(&#39;utf-8&#39;)
Traceback (most recent call last):
  ...
UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xff in position 3: invalid start byte

위는 Python 문자열 프로그래밍에 문제가 있습니다.

위 내용은 Python 문자열과 관련된 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.