Heim > Backend-Entwicklung > Python-Tutorial > Ausführliche Erläuterung der String-Operationen und der Unicode-Kodierung in Python

Ausführliche Erläuterung der String-Operationen und der Unicode-Kodierung in Python

高洛峰
Freigeben: 2017-02-23 16:22:12
Original
1273 Leute haben es durchsucht

Dieser Artikel führt Sie hauptsächlich in einige Kenntnisse über String-Operationen und die Codierung von Unicode in Python ein. 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'
Nach dem Login kopieren

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'
Nach dem Login kopieren

Kodierung und Dekodierung

  • chr und ord

>>> ord('中') #20013
>>> chr(20013) #'中'
Nach dem Login kopieren

  • 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=&#39;utf-8&#39;)<br/>

bytes(s ,encoding='utf- 8')<code>bytes(s,encoding=&#39;utf-8&#39;)<br/>

bytes.decode(encoding='utf-8')<code>bytes.decode(encoding=&#39;utf-8&#39;)<br/>

str(B, encoding=&#39;utf-8&#39;)

bytearray(string, encoding=&#39;utf-8&#39;)

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.

Hilfsfunktionen

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()
Nach dem Login kopieren


Bitte mehr Python Achten Sie auf die chinesische PHP-Website für verwandte Artikel zu String-Operationen und der Codierung von Unicode!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage