UnicodeEncodeError: 'ascii' codec ne peut pas encoder les caractères u'\xa3'

J'ai une feuille de calcul Excel que je suis en train de lire en ce que contient quelques £ signes.

Quand j'essaie de le lire en utilisant le xlrd module, j'obtiens l'erreur suivante:

x = table.cell_value(row, col)
x = x.decode("ISO-8859-1")
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 0: ordinal not in range(128)

Si je réécris ce à x.encode('utf-8') il s'arrête de lancer une erreur, mais malheureusement, quand je puis écrire les données de quelque part d'autre (latin-1), le £ signes sont tous devenus illisibles.

Comment puis-je résoudre ce problème, et de lire les £ signes correctement?

--- Mise à JOUR ---

Un certain type de lecteurs ont suggéré que je n'ai pas besoin de le décoder à tous, ou que je peux juste coder à Latin-1, quand j'en ai besoin. Le problème, c'est que j'ai besoin d'écrire les données dans un fichier CSV finalement, il me semble que l'objet de la crue de chaînes.

Si je ne suis pas d'encoder ou de décoder les données, ce qui arrive (après je l'ai ajouté à la chaîne dans un tableau appelé les éléments):

for item in items:
    #item = [x.encode('latin-1') for x in item]
    cleancsv.writerow(item)
File "clean_up_barnet.py", line 104, in <module>
 cleancsv.writerow(item)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2022' in position 43: ordinal not in range(128)

J'obtiens la même erreur, même si je dé-commenter le Latin-1 ligne.

  • Êtes-vous .decode-ing deux fois?
  • Je ne le pense pas. La ligne précédente est x = table.cell_value(ligne, col), de la xlrd module, même si - c'est peut-être de faire quelque chose de drôle?
InformationsquelleAutor AP257 | 2010-08-27