Da es schwierig ist, den Zeichencode jedes Mal zu überprüfen und festzulegen, wenn die Datei gelesen wird, habe ich ein Modell erstellt, um sie automatisch zu erfassen. -Es ist besonders nützlich, wenn Sie CSV-Dateien importieren, die in Excel erstelltes Japanisch enthalten. -Es unterstützt auch das Importieren von Dateien im Netz.
Wenn Sie den Rückgabewert zum Zeitpunkt des Öffnens auf Codierung einstellen, funktioniert dies bisher problemlos.
def check_encoding(file_path): '' 'Holen Sie sich den Zeichencode der Datei' '' from chardet.universaldetector import UniversalDetector import requests
detector = UniversalDetector()
if file_path[:4] == 'http':
r = requests.get(file_path)
for binary in r:
detector.feed(binary)
if detector.done:
break
detector.close()
else:
with open(file_path, mode='rb') as f:
for binary in f:
detector.feed(binary)
if detector.done:
break
detector.close()
print(" ", detector.result, end=' => ')
print(detector.result['encoding'], end='\n')
return detector.result['encoding']
-Es scheint, dass CSV einschließlich Japanisch viele Shift_JIS hat, daher scheint es besser, es im nächsten Modell in ein allgemeineres CP932 zu konvertieren.
Durch Eingabe des im ersten Modell erhaltenen Rückgabewerts als Argument kann der optimale Zeichencode als Rückgabewert erhalten werden.
def change_encoding(encoding): '' 'Konvertiert die Codierungs-sjis-Beziehung in cp932' '' if encoding in ['Shift_JIS', 'SHIFT_JIS', 'shift_jis', 'sjis', 's_jis']: encoding = 'cp932'
return encoding
Betreut, danke.