Heim  >  Artikel  >  Backend-Entwicklung  >  Dinge, die man mit Python-Strings tun kann

Dinge, die man mit Python-Strings tun kann

Tomorin
TomorinOriginal
2018-08-23 17:47:291357Durchsuche

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

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)
'文'

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

>>> '\u4e2d\u6587'
'中文'

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'

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)

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;

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

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!

Stellungnahme:
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