Heim > Backend-Entwicklung > Python-Tutorial > Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

PHPz
Freigeben: 2023-04-22 22:10:11
nach vorne
1631 Leute haben es durchsucht

Testdaten

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

Hinweis: Der Testtext ist in UTF-8 codiert, normalerweise chinesische Zeichen Es belegt drei Bytes. Chinesische Zeichen in GBK belegen normalerweise 2 Bytes.

Codierungskonvertierungscode

import os

# 对于单个文件进行操作的函数,如果需要对文件夹进行操作,可以使用一个函数包装它,这样不用修改本函数,即达到扩展的目的了。
def transfer_encode(source_path, target_path, source_encode='GBK', target_encode='UTF-8'):
    with open(source_path, mode='r', errors='ignore', encoding=source_encode) as source_file:  # 读取文件时,如果直接忽略报错,则程序正常执行,但是文件已经损坏了。
        with open(target_path, mode='w', encoding=target_encode) as target_file:               # 所以,应该捕获异常,停止程序执行。
            line = source_file.readline()
            while line != '':
                target_file.write(line)
                line = source_file.readline()
    print("Execute End!")


# 这个函数的功能和上面是一样的,区别在于它是以二进制读取的,然后解码、转码再写入的
def transfer_encode2(source_path, target_path, source_encode='GBK', target_encode='UTF-8'):
    with open(source_path, mode='rb') as source_file:
        with open(target_path, mode="wb") as target_file:
            bs = source_file.read(1024)
            while len(bs) != 0:
                target_file.write(bs.decode(source_encode).encode(target_encode))
                bs = source_file.read(1024)
    print("Execute End!")



source_path = r'C:\Users\Alfred\Desktop\test_data\test\data.txt'
target_path = r'C:\Users\Alfred\Desktop\test_data\test\data1.txt'

transfer_encode(source_path=source_path, target_path=target_path, source_encode="UTF-8", target_encode="GBK")

# transfer_encode2(source_path=source_path, target_path=target_path)

# 在cmd中使用 type命令,可以查看文件的内容,并且使用cmd默认的编码。
# 使用 chcp 命令可以查看当前使用的编码的数字编号
Nach dem Login kopieren

Ausführungsergebnis

KonsolenausgabeDie Ausgabe dieser Funktionsausführung hat keine Bedeutung. Ich möchte nur wissen, ob es ausgeführt wurde, also drucke ich es aus.

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

Testordner data1.txt ist der konvertierte und codierte Text.

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

Da die generierte Datei nur ein Wort enthält, vergleichen wir nur die Größe . Erfahren Sie, ob die Konvertierung erfolgreich war. Natürlich ist es auch möglich, es direkt zur Ansicht zu öffnen, aber wenn Sie es direkt zur Ansicht öffnen, hat dies keine Auswirkung und es wird ein chinesisches Schriftzeichen angezeigt. Hier verfolgen wir also einen anderen Ansatz und verwenden eine andere Betrachtungsmethode!

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

Hinweis: data.txt ist in UTF-8 codiert, während data1.txt in GBK codiert ist. Da das in China verwendete Windows standardmäßig die chinesische Kodierungsmethode übernimmt, kann es keinen UTF-8-kodierten Text anzeigen. Die dritte Ausgabe dient zur Anzeige der aktuell verwendeten Kodierung. Einzelheiten finden Sie in der Abbildung unten:

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

Hinweis: GBK ist kompatibel mit GB2312-Kodierung.

Anleitung

Mit Python sind nur 7 Zeilen Code erforderlich, um eine einzelne Datei zu konvertieren! Ich habe oben zwei Funktionen geschrieben, aber die Funktionen sind die gleichen. Der Unterschied besteht darin, dass die erste Funktion Textinformationen in einer bestimmten Kodierung liest und sie dann direkt in einer anderen Kodierung schreibt. Die zweite Funktion liest den Dateiinhalt in binärer Form, dekodiert und transkodiert ihn dann zum Schreiben. Das Prinzip ist dasselbe, das heißt, es muss sequentielle Decodierungs- und Transcodierungsvorgänge umfassen.

Kodierung, Dekodierung und Zeichensätze selbst sind sehr kompliziert und ich weiß nicht, wie ich sie im Detail erklären soll. Das Verständnis hier kann wie folgt vereinfacht werden. Der Zweck des Lesens der UTF-8-codierten Datei besteht darin, die zugeordneten Zeichen abzurufen und sie dann erneut zu schreiben, um sie einer anderen Codierung zuzuordnen Zeichensatz, daher ähnelt das

-Zeichen der Funktion einer Übergabestation. Wenn Sie einen Zeichensatz direkt verwenden, um den Inhalt eines anderen Zeichensatzes zu lesen, werden die im obigen Cmd angezeigten verstümmelten Zeichen angezeigt.

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

PS: Daher kann es auch ein Problem erklären, nämlich warum das Öffnen einer großen Textdatei dazu führt, dass das Programm einfriert! Denn eine große Textdatei enthält viele Zeichen, die dekodiert werden müssen. Dies ähnelt in gewisser Weise einer Warteschlange. Jedes Zeichen wartet darauf, dekodiert zu werden. Obwohl die Verarbeitung eines Zeichens schnell ist, enthält eine große Textdatei eine große Anzahl von Zeichen. Notepad++ hat zum Beispiel kein Problem damit, große Texte zu öffnen, aber als ich diesen sehr großen Text öffnete, blieb er trotzdem hängen! (Die Warteschlange hier ist nur eine Metapher, und ich kenne die tatsächliche Situation nicht, aber sie muss einzeln behandelt werden.)

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

Zur Schätzung gehen wir davon aus, dass alle Zeichen auf Chinesisch sind (tatsächlich sind einige englische Zeichen enthalten, aber insgesamt ist Chinesisch immer noch die Mehrheit). Hier wird gezeigt, dass etwa 50 Millionen Zeichen dekodiert werden müssen, also ist es so Es ist immer noch sehr schwierig für den Computer, die Zusammenfassung zu verarbeiten. Ja, Notepad++ kann die Zusammenfassung anzeigen, aber sie friert ein, wenn sie direkt geöffnet wird, daher werde ich es hier nicht versuchen.

Wie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?

Das obige ist der detaillierte Inhalt vonWie kann das Problem der Konvertierung von Textdateien in Python gelöst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
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