Heim  >  Artikel  >  Backend-Entwicklung  >  Erläuterung der Konvertierungsmodul-Codecs in Python (mit Beispielen)

Erläuterung der Konvertierungsmodul-Codecs in Python (mit Beispielen)

不言
不言nach vorne
2018-10-29 17:13:257415Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Erklärung der Konvertierungsmodul-Codecs in Python (mit Beispielen). Ich hoffe, dass er für Sie hilfreich ist.

0. Kodierung

Bei der Konvertierung der Kodierung ist es normalerweise erforderlich, Unicode als Zwischenkodierung zu verwenden, d. h. zuerst andere kodierte Zeichenfolgen in Unicode zu dekodieren und dann von Unicode in eine andere Kodierung kodieren.

str1.decode('gb2312')    #将gb2312编码的字符串转换成unicode编码
str2.encode('gb2312')    #将unicode编码的字符串转换成gb2312编码

Hinweis:

s=‘Chinesisch’ Wenn es sich um eine utf8-Datei handelt, ist die Zeichenfolge utf8-codiert. Wenn es sich um eine gb2312-Datei handelt, ist die Codierung gb2312. In diesem Fall müssen Sie zum Durchführen der Kodierungskonvertierung zunächst die Dekodierungsmethode verwenden, um sie in die Unicode-Kodierung zu konvertieren, und dann die Kodierungsmethode verwenden, um sie in andere Kodierungen zu konvertieren.
Wenn keine bestimmte Kodierungsmethode angegeben ist, werden die Codedateien mit der Standardkodierung des Systems erstellt.
Wenn die Zeichenfolge wie folgt definiert ist: s=u’Chinese’, wird die Kodierung der Zeichenfolge als Unicode angegeben, was die interne Kodierung von Python ist, unabhängig von der Kodierung der Codedatei selbst. Sie müssen nur die Codierungsmethode direkt verwenden, um sie in die angegebene Codierung zu konvertieren.
Wenn eine Zeichenfolge bereits Unicode ist, tritt beim Decodieren ein Fehler auf. Daher muss normalerweise festgestellt werden, ob die Codierungsmethode Unicode ist , Unicode ) # Wird verwendet, um festzustellen, ob es sich um Unicode handelt

1. Sehen Sie sich die Kodierungsmethode an

(1) Für den Notizblock verwenden wir oft „Datei“ -> Sie können die aktuelle Kodierungsmethode anzeigen.
(2) Öffnen Sie es mit Notepad++, klicken Sie auf „Menüleiste“ ->
(3) UltraEdit:
Das Kodierungsformat von Text mit unterschiedlichen Kodierungen wird basierend auf den ersten beiden Bytes des Textes definiert. Die Definition lautet wie folgt:

ANSI: Keine Formatdefinition
Unicode: Die ersten beiden Bytes sind FFFE;
Unicode Big Endian: Die ersten beiden Bytes sind FEFF;
UTF-8: Die ersten beiden Bytes sind EFBB; Bytes Das spezifische Format der Datei wird bestimmt.

2. Python-Kodierung

Wenn Python die Kodierung konvertieren muss, wird der Konvertierungsprozess wie folgt durchgeführt:

Originalkodierung-> Zielkodierung

Python wird intern mit Unicode verarbeitet. Bei der Verwendung von Unicode muss jedoch berücksichtigt werden, dass es zwei Kodierungsformate gibt, die insgesamt 65536 Codepunkte haben UCS-4 mit 2147483648g Codepunkten.

Bestimmen Sie, welche Kodierungsmethode das installierte Python verwendet:

import sys
print(sys.maxunicode)

Wenn der Ausgabewert 65535 ist, dann ist es UCS-2, wenn die Ausgabe 1114111 ist, ist es UCS-4-Kodierung.

In internen Code konvertieren:

c = "风卷残云"
print(type(c))
c = bytes(c,encoding='utf-8')
print(type(c))
print(c)
b = codecs.decode(c, "utf-8") #与c.decode()等效
print(type(b))
print(b)
print(c.decode())

Ausgabe:

<class &#39;str&#39;>
<class &#39;bytes&#39;>
b&#39;\xe9\xa3\x8e\xe5\x8d\xb7\xe6\xae\x8b\xe4\xba\x91&#39;
<class &#39;str&#39;>
风卷残云
风卷残云

3. Codecs-Modul

Codecs wird speziell für die Codierungskonvertierung verwendet. Über seine Schnittstelle kann es auf andere Codetransformationen erweitert werden.

In python3.x können Daten vom Typ Byte direkt in andere Kodierungsformate konvertiert werden, ohne dass sie zuerst manuell in Unicode konvertiert werden müssen.

import codecs
a = "我爱你"
 # 创建utf-8编码器
look = codecs.lookup(&#39;utf-8&#39;)
type(a)
a = bytes(a,encoding=&#39;utf-8&#39;)
b = look.decode(a) 
print(b)

Ausgabe:

('我爱你', 9)
Im zurückgegebenen Tupel sind b[0] die Daten und b[1] die Länge.

** Verwenden Sie die von Codecs bereitgestellte Open-Methode, um die Sprachcodierung der geöffneten Datei anzugeben. Sie wird beim Lesen automatisch in internen Unicode konvertiert**

f = codecs.open(filepath, 'r', 'utf8')
Es gibt viele Möglichkeiten zum Lesen. f kann hier mit einer for-Schleife durchlaufen werden, natürlich kann es auch direkt mit der Funktionsmethode readline oder readlines gelesen werden.

#for i in f:
#    print(i)
#f.readline()
#f.read()
#f.readlines()

Das obige ist der detaillierte Inhalt vonErläuterung der Konvertierungsmodul-Codecs in Python (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen