Heim >Backend-Entwicklung >Python-Tutorial >Erläuterung der Konvertierungsmodul-Codecs in Python (mit Beispielen)
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.
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) 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.
Originalkodierung-> Zielkodierung
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 'str'> <class 'bytes'> b'\xe9\xa3\x8e\xe5\x8d\xb7\xe6\xae\x8b\xe4\xba\x91' <class 'str'> 风卷残云 风卷残云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('utf-8') type(a) a = bytes(a,encoding='utf-8') 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!