Python: Convertir Unicode en ASCII sans erreurs de fichier CSV

J'ai lu toutes les questions concernant la conversion du format Unicode au format CSV en Python ici dans StackOverflow et je suis toujours perdu. Chaque fois que je reçois un "UnicodeEncodeError: 'ascii' codec ne peut pas encoder les caractères u'\xd1' à la position 12: ordinal pas in range(128)"

buffer=cStringIO.StringIO()
writer=csv.writer(buffer, csv.excel)
cr.execute(query, query_param)
while (1):
    row = cr.fetchone()
    writer.writerow([s.encode('ascii','ignore') for s in row])

La valeur de ligne est

(56, u"LIMPIADOR BA\xd1O 1'5 L")

où la valeur de \xd10 à la base de données est -, un n avec un diacritiques tilde utilisé en espagnol. J'ai d'abord essayé de convertir la valeur à quelque chose de valable en ascii, mais après avoir perdu autant de temps, j'essaie seulement d'ignorer ces personnages (je suppose que j'aurais le même problème avec des voyelles accentuées).

Je voudrais enregistrer la valeur pour le CSV, de préférence avec le ñ ("LIMPIADOR BAÑO 1'5 L"), mais si pas possible, au moins être en mesure de l'enregistrer ("LIMPIADOR BAO 1'5 L").

  • Quelle est votre question?
  • Mis à jour avec la question à la fin.
  • Pourquoi n'essayez-vous pas de l'encodage de votre Windows local 'ANSI' page de codes? Je devine que vous utilisez Windows, car CSV est le plus couramment utilisé sur Windows, mais s'il vous plaît m'ignorer si c'est à l'échelle de la marque. Sur un *NIX OS je suppose que l'une des 8 bits ISO codages serait approprié, mais je ne suis pas expert.
  • Btw, je suis sur Ubuntu.
InformationsquelleAutor Sergi | 2011-01-10