Bonjour,
les notions d'encodage ne sont pas ma spécialité.
J'avais trouvé un 'outil' qui me permettait globalement de gérer l'accentuation dans les fichiers CSV
Or, maintenant, j'ai une erreur qui bloque mon programme.
J'ai identifié le fautif : Il s'agit de <CR> ('\r' pour python)
Mais, j'en ai besoin...
je dois récupérer dans un champ d'une base de données, les 8 premières lignes de description d'un article (sous forme de lignes distincte)
voici une partie de mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
import re
import csv, codecs, cStringIO
tablitm = []
""" routine d'obtention des données de la requête dans 'irows' non décrite"""
for irow in irows:
noart = irow.ItemCode
longtexte = irow.UserText
if longtexte is not None:
wtexte = re.split('\r',longtexte)
nblig = len(wtexte)
maxlig = 8
if nblig < 8:
maxlig = nblig
chaine = '\r'.join(wtexte[0:maxlig])
tablitm.append([])
for elem in(noart, chaine):
tablitm[-1].append(elem)
fs = cStringIO.StringIO()
c = csv.writer(fs, delimiter=';', quoting=csv.QUOTE_NONE, quotechar='')
for liste in tablitm:
ligne = []
for elem in liste:
ligne.append(elem.encode('utf-8'))
c.writerow(ligne) |
là, j'ai l'erreur suivante :
Traceback (most recent call last):
File "<pyshell#71>", line 5, in <module>
c.writerow(ligne)
Error: need to escape, but no escapechar set
à titre d'exemple, voici la représentation d'une 'ligne' de la table tablitm :
[u'KDL22BX200B', u"Taille de l'\xe9cran en cm : 56\rFull HD : non\rR\xe9solution : 1366x768\rTuner : TNT HD\rPuissance de sortie audio en Watts : 6\rEntr\xe9e HDMI : 1\rPrise p\xe9ritel : 1\rEntr\xe9e USB : oui 2.0"]
Si je remplace la ligne
chaine = '\r'.join(wtexte[0:maxlig])
par
chaine = '-'.join(wtexte[0:maxlig])
cela fonctionne correctement.
Le remplacement de quotechar='' par quotchar='"' n'apporte pas de modification
Que dois-je faire ?
Partager