>백엔드 개발 >파이썬 튜토리얼 >문자열 연산 및 Python의 유니코드 인코딩에 대한 자세한 설명_

문자열 연산 및 Python의 유니코드 인코딩에 대한 자세한 설명_

高洛峰
高洛峰원래의
2017-02-21 10:12:311552검색

사실 문자열도 데이터 유형입니다. 하지만 문자열은 인코딩 문제가 있다는 점에서 특별합니다. 다음 글에서는 파이썬에서 문자열 연산과 유니코드 인코딩에 대한 관련 정보를 주로 소개합니다. 필요한 친구들이 참고할 수 있습니다.

이 글은 주로 Python에서 문자열 연산과 유니코드 인코딩에 대한 지식을 소개합니다. 아래에서는 많이 말하지 않겠습니다. 필요한 친구들은 함께 와서 배울 수 있습니다.

문자열 유형

str: 유니코드 문자열. '' 또는 r''을 사용하여 구성된 문자열은 모두 str이며, 작은따옴표는 큰따옴표나 삼중따옴표로 대체될 수 있습니다. 어떻게 지정하든 Python 내부에 저장되면 차이가 없습니다.

bytes: 이진 문자열. jpg 등 다른 형식의 파일은 str을 사용하여 표시할 수 없으므로 바이트의 각 바이트는 0부터 255까지의 숫자로 표시됩니다. 인쇄할 때 Python에서는 ASCII로 표현할 수 있는 부분을 ASCII로 표시하므로 읽기가 더 쉽습니다. bytes는 제자리에서 변경할 수 있는 바이너리 문자열인 re 모듈

bytearray() 을 포함하여 서식 지정을 제외한 거의 모든 str 메서드를 지원합니다.

utf-8 인코딩 범위

范围 字节数 存储格式
0x0000~0x007F (0 ~ 127) 1字节 0xxxxxxx
0x0080~0x07FF(128 ~ 2047) 2字节 110xxxxx 10xxxxxx
0x0800~FFFF(2048 ~ 65535)  3字节 1110xxxx 10xxxxxx 10xxxxxx
0x10000~1FFFFFF(65536 ~ 2097152) 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0x2000000~0x3FFFFFF 5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x4000000~0x7FFFFFFF)  6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

바이트 순서 표시 BOM

BOM은 바이트 순서 마커의 약어,

인코딩 작성 시 규칙을 지정합니다

파이썬은 'utf-8' 인코딩 헤더를 사용하여 파일을 작성할 때 BOM을 작성하지 않지만, 'utf-8-sig' 인코딩을 지정하면 Python이 BOM 헤더를 작성하게 됩니다.

'utf-16-be'를 사용하면 BOM 헤더가 작성되지 않지만, 'utf-16'을 사용하면 BOM 헤더가 작성됩니다.

>>> open('h.txt','w',encoding='utf-8-sig').write('aaa')
3
>>> open('h.txt','rb').read()
b'\xef\xbb\xbfaaa'
>>> open('h.txt','w',encoding='utf-16').write('bbb')
3
>>> open('h.txt','rb').read()
b'\xff\xfeb\x00b\x00b\x00'
>>> open('hh.txt','w',encoding='utf-16-be').write('ccc')
3
>>> open('hh.txt','rb').read()
b'\x00c\x00c\x00c'
>>> open('h.txt','w',encoding='utf-8').write('ddd')
3
>>> open('h.txt','rb').read()
b'ddd'

읽을 때의 규칙

올바른 인코딩이 지정되면 BOM이 무시되고, 그렇지 않으면 BOM 잘못된 문자로 표시되거나 예외가 반환됩니다.

>>> open('h.txt','r').read()
'锘縟dd'
>>> open('h.txt','r',encoding='utf-8-sig').read()
'ddd'

인코딩 및 디코딩

  • 문자 및 순서

>>> ord('中') #20013
>>> chr(20013) #'中'

  • 문자열에 유니코드를 하드코드합니다.

'xhh': 문자를 표현하기 위해 2자리 16진수 사용

'uhhhh': 문자를 표현하기 위해 4자리 16진수 사용 문자:

'Uhhhhhhh': 8자리 16진수를 사용하여 문자

>>> s = 'pyx74hu4e2don' #'pyth中on'

str 및 bytes , bytearray 변환

str.encode(encoding='utf-8')<code>str.encode(encoding='utf-8')<br>

바이트(s ,encoding='utf- 8')<code>bytes(s,encoding='utf-8')<br>

bytes.decode(encoding='utf-8')<code>bytes.decode(encoding='utf-8')<br>

str(B, encoding='utf-8')

bytearray(string, encoding='utf-8')

bytearray(bytes)

문서 인코딩 문

Python은 utf-8을 사용합니다. 기본적으로 인코딩.

# -*- coding: latin-1 -*- : 문서가 latin-1 인코딩으로 선언되었음을 나타냅니다.

도우미 기능

sys.platform  #&#39;win32&#39;
sys.getdefaultencoding() # &#39;utf-8&#39;
sys.byteorder  #&#39;little&#39;
s.isalnum()  #s表示字符串
s.isalpha()
s.isdecimal
s.isdigit()
s.isnumeric()
s.isprintable()
s.isspace()
s.isidentifier() #如果字符串可以用作变量名,那么返回True
s.islower()
s.isupper()
s.istitle()

파이썬에서 문자열 연산 및 유니코드 인코딩에 대한 자세한 설명과 관련된 추가 기사 PHP 중국어 홈페이지를 주목해주세요!

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