사실 문자열도 데이터 유형입니다. 하지만 문자열은 인코딩 문제가 있다는 점에서 특별합니다. 다음 글에서는 파이썬에서 문자열 연산과 유니코드 인코딩에 대한 관련 정보를 주로 소개합니다. 필요한 친구들이 참고할 수 있습니다.
이 글은 주로 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 #'win32' sys.getdefaultencoding() # 'utf-8' sys.byteorder #'little' 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 중국어 홈페이지를 주목해주세요!