Encodage de caractères lors de l'utilisation du module csv de python 2.7.3

J'ai chargé un fichier csv contenant des valeurs japonaises à l'aide du module csv de Python Problèmes dans les conditions suivantes et leurs solutions

Première lecture normalement Le format de csv est Gardez-le sous la forme «entier, chaîne»

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]

Vous avez maintenant lu toutes les lignes de données Ensuite, ** extrayez les données qui incluent toute chaîne de caractères japonais dans le nom **

python


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

Le problème se pose ici. La chaîne obtenue par raw_input () est ** de type unicode ** Cependant, ce que vous obtenez avec data.name est le ** type utf-8 str ** lu par csv.reader. Bien sûr, la comparaison n'est pas possible, donc une erreur se produit à ʻif texte dans row.name`.

Alors que faire

La solution est

Je pense qu'il y a deux possibilités, mais comme c'est unicode qui est facile à manipuler, je vais utiliser le premier cette fois. Dans ce cas, ce qui doit être corrigé est

python


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

est. Faites ceci ici

python


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

str # decode est un encodage de caractères arbitraire qui convertit le type str en type unicode. Cette fois, l'original est utf-8 str, donc je l'ai décodé avec utf-8 et l'ai changé en unicode. Le décodage doit être modifié en fonction de l'encodage des caractères du fichier csv d'origine (naturellement)

Vous pouvez maintenant comparer les unicodes. Toutes nos félicitations Lorsque vous jouez avec python sous Windows, vous rencontrez souvent ce type de problème d'encodage de caractères.

Recommended Posts

Encodage de caractères lors de l'utilisation du module csv de python 2.7.3
Résolvez le problème japonais lors de l'utilisation du module CSV en Python.
Encodage de caractères lors du traitement de fichiers en Python 3
Essayez d'utiliser le module de collections (ChainMap) de python3
Mise à jour automatique du module Python
python: principes de base de l'utilisation de scikit-learn ①
2.x, 3.x code de caractères des séries python
Afficher à l'aide du module python du backend mobile Nifty Cloud
[Python: UnicodeDecodeError] L'une des solutions d'erreur lors de la lecture de CSV
Liste des bibliothèques à installer lors de l'installation de Python à l'aide de Pyenv
[Python] Chargement de fichiers csv à l'aide de pandas
Précautions lors de l'utilisation de Pit avec Python
[Python] Soyez prudent lorsque vous utilisez print
Implémentation des notifications de bureau à l'aide de Python
Essayez d'utiliser le module Python Cmd
Précautions lors de l'utilisation de phantomjs de python
Lors de l'utilisation de MeCab avec python dans virtualenv
Précautions lors de l'utilisation de six avec Python 2.5
Lors de l'utilisation d'expressions régulières en Python
Python: principes de base de la reconnaissance d'image à l'aide de CNN
Collecte automatique des cours boursiers à l'aide de python
À propos de la création de l'interface graphique à l'aide de TKinter de Python
Changer la longueur des chaînes csv Python
Traitement d'exécution périodique lors de l'utilisation de tkinter [Python3]
Pratique d'utilisation de ceci en Python (mauvais)
Passez le chemin du module python importé
Comparaison des modules de conversion japonais en Python3
Créer un diagramme de relations des modules Python
Python: Application de la reconnaissance d'image à l'aide de CNN
Placement de Fabicon (lors de l'utilisation de Python, Flask, Heroku)
[python, multitraitement] Comportement des exceptions lors de l'utilisation du multitraitement
[Python] Accélère le chargement du fichier CSV de séries chronologiques
[Python] Comment lire le fichier csv (méthode read_csv du module pandas)
Vérifiez le chemin du module importé Python
Grammaire de base de la série Python3 (chaîne de caractères)
Encodage Python
Étude sur Tokyo Rent en utilisant Python (3-1 sur 3)
Conversion de code de caractère des fichiers CSV à l'aide de Loop (Shift JIS to UTF8)
[Python] Récupère le code de caractère du fichier
Lorsque Python "Erreur de syntaxe: caractère non ASCII ~" apparaît
Je suis tombé sur un code de caractère lors de la conversion de CSV en JSON avec Python
Ajouter dynamiquement l'en-tête CSV comme nom d'attribut de la classe Model à l'aide de setattr de python
Lorsque vous utilisez PyQtGraph avec Python Pyside, faites attention à l'ordre d'importation
Erreur lors de l'installation d'un module avec Python pip
Analyse de la variation temporelle des trous noirs en utilisant Python
[python] Créer une liste de différents types de caractères
[Python] Exécutons le module régulièrement en utilisant schedule
Méfiez-vous des disable_existing_loggers lors de la configuration de la journalisation Python
[Python] [chardet] Détection automatique du code de caractère dans les fichiers
Introduction de la bibliothèque d'imagerie Python (PIL) à l'aide de HomeBrew
[Hikari-Python] Module Chapitre 08-04 (Installation d'une bibliothèque externe)
Passer des valeurs entre les pages à l'aide du module cgi Python 3.5
J'ai essayé de lire un fichier CSV en utilisant Python
J'ai essayé d'utiliser le module Datetime de Python
Liens et mémos de chaînes de code de caractères Python
[Python] Une compréhension approximative du module de journalisation
Téléchargement anonyme d'images à l'aide de l'API Imgur (à l'aide de Python)