Zeichenkodierung bei Verwendung des CSV-Moduls von Python 2.7.3

Ich habe eine CSV-Datei mit japanischen Werten mit dem CSV-Modul von Python geladen Probleme unter folgenden Bedingungen und deren Lösungen

Zuerst normal lesen Das Format von csv ist Behalten Sie es in der Form "Ganzzahl, Zeichenfolge"

python


class data:
    
  def __init__(self, id, name):
    self.id = id
    self.name = name

import csv

csvfile = open(filename)
reader = csv.reader(csvfile)
rows = [data(row[0], row[1]) for row in reader]

Sie haben jetzt alle Datenzeilen gelesen Als nächstes ** extrahieren Sie Daten, die eine japanische Zeichenfolge im Namen enthalten **

python


text = raw_input()
result = [row for row in rows if text in row.name]

Hier tritt das Problem auf. Die von raw_input () erhaltene Zeichenfolge ist vom Typ ** Unicode ** Was Sie jedoch mit data.name erhalten, ist der von csv.reader gelesene Typ ** utf-8 str **. Ein Vergleich ist natürlich nicht möglich, daher tritt ein Fehler bei "if text in row.name" auf.

Was ist dann zu tun

Die Lösung ist

Ich denke, es gibt zwei Möglichkeiten, aber da es sich um einen einfach zu handhabenden Unicode handelt, werde ich diesmal den ersteren verwenden. In diesem Fall muss Folgendes behoben werden

python


rows = [data(row[0], row[1]) for row in reader]

ist. Mach das hier

python


rows = [data(row[0], row[1].decode('utf-8')) for row in reader]

str # decode ist eine beliebige Zeichenkodierung, die den str-Typ in den Unicode-Typ konvertiert. Dieses Mal ist das Original utf-8 str, also habe ich es mit utf-8 dekodiert und in Unicode geändert. Die Dekodierung muss abhängig von der Zeichenkodierung der ursprünglichen CSV-Datei geändert werden (natürlich).

Jetzt können Sie Unicodes vergleichen. Herzliche Glückwünsche Wenn Sie unter Windows mit Python spielen, treten häufig Probleme mit der Zeichencodierung auf.

Recommended Posts

Zeichenkodierung bei Verwendung des CSV-Moduls von Python 2.7.3
Lösen Sie das japanische Problem, wenn Sie das CSV-Modul in Python verwenden.
Zeichenkodierung beim Umgang mit Dateien in Python 3
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Automatisches Update des Python-Moduls
Python: Grundlagen der Verwendung von Scikit-Learn ①
2.x, 3.x Serienzeichencode von Python
Anzeigen mit dem Python-Modul des mobilen Nifty Cloud-Backends
[Python: UnicodeDecodeError] Eine der Fehlerlösungen beim Lesen von CSV
Liste der zu installierenden Bibliotheken bei der Installation von Python mit Pyenv
[Python] Laden von CSV-Dateien mit Pandas
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
[Python] Seien Sie vorsichtig, wenn Sie Druck verwenden
Implementierung von Desktop-Benachrichtigungen mit Python
Versuchen Sie es mit dem Python Cmd-Modul
Vorsichtsmaßnahmen bei der Verwendung von Phantomjs aus Python
Bei Verwendung von MeCab mit virtualenv python
Vorsichtsmaßnahmen bei Verwendung von sechs mit Python 2.5
Bei Verwendung regulärer Ausdrücke in Python
Python: Grundlagen der Bilderkennung mit CNN
Automatische Erfassung von Aktienkursen mit Python
Informationen zum Erstellen einer GUI mit TKinter of Python
Ändern Sie die Länge der Python-CSV-Zeichenfolgen
Periodische Ausführungsverarbeitung bei Verwendung von tkinter [Python3]
Übung, dies in Python zu verwenden (schlecht)
Übergeben Sie den Pfad des importierten Python-Moduls
Vergleich japanischer Konvertierungsmodule in Python3
Erstellen Sie ein Beziehungsdiagramm von Python-Modulen
Python: Anwendung der Bilderkennung mit CNN
Platzierung von Fabicon (bei Verwendung von Python, Flask, Heroku)
[Python, Multiprocessing] Verhalten für Ausnahmen bei Verwendung von Multiprocessing
[Python] Beschleunigt das Laden von Zeitreihen-CSV
[Python] Lesen der CSV-Datei (Methode read_csv des Pandas-Moduls)
Überprüfen Sie den Pfad des importierten Python-Moduls
Grundlegende Grammatik der Python3-Reihe (Zeichenkette)
Python-Codierung
Studie über die Miete in Tokio mit Python (3-1 von 3)
Zeichencode-Konvertierung von CSV-Dateien mit Loop (Shift JIS to UTF8)
[Python] Ruft den Zeichencode der Datei ab
Wenn Python "Syntaxfehler: Nicht-ASCII-Zeichen ~" angezeigt wird
Bei der Konvertierung von CSV in JSON mit Python bin ich auf einen Zeichencode gestoßen
Fügen Sie mithilfe von setattr of python dynamisch den CSV-Header als Attributnamen der Modellklasse hinzu
Beachten Sie bei der Verwendung von PyQtGraph mit Python Pyside die Reihenfolge des Imports
Fehler beim Installieren eines Moduls mit Python pip
Zeitvariationsanalyse von Schwarzen Löchern mit Python
[Python] Erstellen Sie eine Liste mit verschiedenen Zeichentypen
[Python] Lassen Sie uns das Modul regelmäßig nach Zeitplan ausführen
Achten Sie beim Konfigurieren der Python-Protokollierung auf disable_existing_loggers
[Python] [chardet] Automatische Erkennung von Zeichencode in Dateien
Einführung der Python Imaging Library (PIL) mit HomeBrew
[Hikari-Python] Kapitel 08-04 Modul (Installation einer externen Bibliothek)
Übergeben Sie Werte zwischen Seiten mit dem Python 3.5-CGI-Modul
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Links und Memos von Python-Zeichencodezeichenfolgen
[Python] Ein grobes Verständnis des Protokollierungsmoduls
Anonymer Upload von Bildern mit der Imgur-API (mit Python)