Dinge, die man mit Python-Strings tun kann

Tomorin
Freigeben: 2018-08-23 17:47:29
Original
1347 Leute haben es durchsucht

In diesem Kapitel wird das Schreiben und Verarbeiten von Python-Strings vorgestellt. Zuvor haben wir das problematische Zeichenkodierungsproblem herausgefunden und werden dann Python-Strings untersuchen.

In der neuesten Python 3-Version sind Strings in Unicode codiert, was bedeutet, dass Python-Strings mehrere Sprachen unterstützen, zum Beispiel:

>>> print('包含中文的str')
包含中文的str
Nach dem Login kopieren

Für die Kodierung eines einzelnen Zeichens stellt Python die Funktion ord() bereit, um die ganzzahlige Darstellung des Zeichens zu erhalten, chr()Die Funktion wandelt die Kodierung in das entsprechende Zeichen um:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
Nach dem Login kopieren

Wenn Sie die ganzzahlige Kodierung des Zeichens kennen, können Sie str auch hexadezimal schreiben:

>>> '\u4e2d\u6587'
'中文'
Nach dem Login kopieren

Die beiden Schreibweisen sind völlig gleichwertig . .

Da Pythons String-Typ str ist, wird er durch Unicode im Speicher dargestellt, und ein Zeichen entspricht mehreren Bytes. Wenn Sie es über das Netzwerk übertragen oder auf der Festplatte speichern möchten, müssen Sie str in Bytes in Bytes umwandeln.

Python verwendet einfache Anführungszeichen oder doppelte Anführungszeichen mit dem Präfix „b“, um Bytetypdaten darzustellen:

x = b'ABC'
Nach dem Login kopieren

Achten Sie darauf, zwischen „ABC“ und „b'ABC“ zu unterscheiden Letzteres ist Der Inhalt wird genauso angezeigt wie beim ersteren, aber jedes Byte-Zeichen belegt nur ein Byte.

Str in Unicode ausgedrückt kann mit der Methode encode() in bestimmte Bytes codiert werden, zum Beispiel:

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

Str in reinem Englisch kann mit ASCII in Bytes codiert werden, der Inhalt ist derselbe , einschließlich Chinesisch Der str kann mit UTF-8 in Bytes codiert werden. Str, die Chinesisch enthalten, kann nicht in ASCII codiert werden, da der Bereich der chinesischen Codierung den Bereich der ASCII-Codierung überschreitet und Python einen Fehler meldet.

In Bytes werden Bytes, die nicht als ASCII-Zeichen angezeigt werden können, mit x## angezeigt.

Wenn wir umgekehrt einen Bytestrom aus dem Netzwerk oder der Festplatte lesen, handelt es sich bei den gelesenen Daten um Bytes. Um Bytes in str umzuwandeln, müssen Sie die Methode decode() verwenden:

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

Wenn Bytes Bytes enthält, die nicht dekodiert werden können, meldet die Methode decode() einen Fehler:

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

Die Oben sind Python-Probleme mit der String-Programmierung

Das obige ist der detaillierte Inhalt vonDinge, die man mit Python-Strings tun kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!