Heim > Artikel > Backend-Entwicklung > Ausführliche Erläuterung der String-Operationen und der Unicode-Codierung in Python_
Tatsächlich sind Strings auch ein Datentyp. Strings sind jedoch insofern etwas Besonderes, als es ein Codierungsproblem gibt. Der folgende Artikel führt Sie hauptsächlich in die relevanten Informationen zu String-Operationen und der Codierung von Unicode in Python ein. Lassen Sie uns gemeinsam einen Blick darauf werfen.
Dieser Artikel vermittelt Ihnen hauptsächlich etwas Wissen über String-Operationen und die Codierung von Unicode in Python. Ich werde im Folgenden nicht viel sagen. Freunde, die es brauchen, können zusammenkommen.
String-Typ
str
: Unicode-String. Mit '' oder r'' erstellte Zeichenfolgen sind alle str, und einfache Anführungszeichen können durch doppelte oder dreifache Anführungszeichen ersetzt werden. Unabhängig davon, wie Sie es angeben, gibt es keinen Unterschied, wenn es intern in Python gespeichert wird.
bytes
: Binärzeichenfolge. Da Dateien in anderen Formaten wie JPG nicht mit str angezeigt werden können, werden sie durch Bytes dargestellt. Jedes Byte ist eine Zahl von 0 bis 255. Beim Drucken zeigt Python den Teil, der in ASCII ausgedrückt werden kann, als ASCII an, was die Lesbarkeit erleichtert. bytes unterstützt fast alle str-Methoden außer der Formatierung, einschließlich des re-Moduls
bytearray()
: eine Binärzeichenfolge, die an Ort und Stelle geändert werden kann.
utf-8-Kodierungsbereich
范围 | 字节数 | 存储格式 |
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 |
Byte Order Mark BOM
BOM Is die Abkürzung für Byte Order Marker,
Gibt die Regeln an, wenn die Codierung geschrieben wird
Python schreibt keine BOM, wenn Dateien mit dem Codierungsheader „utf-8“ geschrieben werden, aber Durch die Angabe der Codierung „utf-8-sig“ wird Python gezwungen, einen BOM-Header zu schreiben.
Bei Verwendung von „utf-16-be“ wird kein Stücklistenkopf geschrieben, bei Verwendung von „utf-16“ wird jedoch ein Stücklistenkopf geschrieben.
>>> 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'
Regeln beim Lesen
Wenn die richtige Kodierung angegeben ist, wird die Stückliste ignoriert, andernfalls , wird die Stückliste als verstümmelte Zeichen angezeigt oder es wird eine Ausnahme zurückgegeben.
>>> open('h.txt','r').read() '锘縟dd' >>> open('h.txt','r',encoding='utf-8-sig').read() 'ddd'
Kodierung und Dekodierung
chr und ord
>>> ord('中') #20013 >>> chr(20013) #'中'
Unicode fest in die Zeichenfolge codieren.
'xhh': Verwenden Sie zweistellige Hexadezimalzahlen, um ein Zeichen darzustellen.
'uhhhh': Verwenden Sie vierstellige Hexadezimalzahlen, um ein Zeichen darzustellen. Zeichen:
'Uhhhhhhhh': Verwenden Sie 8-stelliges Hexadezimal, um ein Zeichen darzustellen
>>> s = 'pyx74hu4e2don' #'pyth中on'
str und bytes, Bytearray konvertieren
str.encode(encoding='utf-8')<code>str.encode(encoding='utf-8')<br>
bytes(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)
Dokumentkodierungserklärung
Python verwendet utf-8 Codierung standardmäßig.
# -*- coding: latin-1 -*-
: Zeigt an, dass das Dokument als Latin-1-codiert deklariert ist.
Hilfsfunktion
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()
Detailliertere Erläuterungen zu String-Operationen und der Codierung von Unicode in Python For Verwandte Artikel, achten Sie bitte auf die chinesische PHP-Website!