Import CSV et encodage en UTF-8

Import CSV et encodage en UTF-8 - Python - Programmation

Marsh Posté le 19-04-2017 à 10:07:18    

Bonjour,
 
Voilà je travail sur le logiciel QGIS (c'est pour faire des SIG) et je développe donc un plugin en python.
 
J'importe un CSV via un encore de selection de fichier :
 

Code :
  1. uri = "file:///"+ self.dlg.lineEdit_couche.text()\
  2.       + '?type=csv&delimiter=%s&crs=epsg:2154&xField=%s&yField=%s'\
  3.       % (str_delimiteur, xField, yField)
  4. uri = uri.encode("utf-8" )


 
Bref tout se passe bien et le CSV est bien importé, sauf que les datas à l'intérieur ne prennent pas les accents... Donc y a t'il un moyen pour encoder les datas du CSV ? j'ai testé différents trucs et ça n'a pas fonctionné :
 

Code :
  1. for row in uri :
  2.       yield [unicode(cell, 'utf-8') for cell in row]


 
Mais ça ne me le prends pas...
 
y aurait il une solution pour encoder ces différentes datas ??
 
Merci de vos réponses !!

Reply

Marsh Posté le 19-04-2017 à 10:07:18   

Reply

Marsh Posté le 19-04-2017 à 13:22:15    

J'ai pas compris, ta variable uri c'est bien une seule URI? Pourquoi tu itères dessus?
 
Sinon:
- Il faudrait savoir en quel format est encodé ton CSV, ton problème ne semblant pas réellement être l'encodage, mais le décodage
- Il y a des différence entyre python 2.7 et python 3 sur la gestion de l'encodage: http://lucumr.pocoo.org/2014/1/5/unicode-in-2-and-3/
 
Une lecture qui peux t'être utile: http://sametmax.com/lencoding-en-p [...] our-toute/


---------------
sheep++
Reply

Marsh Posté le 19-04-2017 à 13:35:25    

Le gros problème c'est qu'il peut être potentiellement encodé en n'importe quoi celons le client qui l'utilise...
 
Ce code est un ancien code de mon prédécesseur d'après ce que j'ai compris la variable uri permet de prendre le fichier CSV, plus tard il est utilisé comme suis :
 

Code :
  1. layer = QgsVectorLayer(uri, nomAttribut ,'delimitedtext')


 
Ce "layer" permet de rajouter une couche sur une carte. Le layer est bien encodé en utf-8, donc le problème se situe sur "uri" celons moi.
 
Si j'ai bien compris sametmax.com en fait je n'ai pas de solution étant donné que mon fichier peut être de n'importe quel encoding...

Reply

Marsh Posté le 19-04-2017 à 13:42:29    

Il ne semple pas exister de solution universelle.
Il existe des librairies qui font de leur mieux, je trouve pas mal de trucs avec "python determine encoding".


---------------
sheep++
Reply

Marsh Posté le 19-04-2017 à 13:45:20    

merci je vais voir avec ça.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed