2010-10-22 7 views
2

J'ai écrit du code qui envoie des requêtes à google et renvoie les résultats de la requête. Apparemment les contenus qui sont récupérés sont au format Unicode, donc quand je les mets dans une liste par exemple et que j'imprime cette liste (toute la liste ensemble et pas membre par membre) un "u" supplémentaire ennuyeux est toujours derrière tous les membres cette liste ..Comment puis-je me débarrasser d'eux? J'ai essayé de convertir tout le texte en ascii mais comme il y a des caractères non-ascii (des langages différents) dans le texte il échoue, maintenant tu sais ce que je devrais faire pour avoir une meilleure sortie? et j'espère que cet 'extra' ne fera aucun problème. grâceRésolution de la sortie unicode en Python

+0

Pourquoi le « u » un problème? Est-ce juste cosmétique? Ou avez-vous besoin d'utiliser cette sortie pour autre chose? –

+0

pour les deux raisons – Hossein

+0

qu'adviendrait-il des caractères non-ASCII? –

Répondre

5

Au lieu de:

>>> print your_list 
[u'foo', u'bar'] 

Utilisation:

>>> print '\n'.join(your_list) 
foo 
bar 

Vous pouvez utiliser ', ' au lieu de '\n' comme séparateur si vous préférez garder sur une seule ligne.

Vous pouvez également rencontrer des problèmes si vous essayez d'afficher des caractères Unicode dans la console Windows. Si oui, vous pouvez utiliser par exemple IDLE qui peut afficher des caractères Unicode. Sinon, vous pouvez convertir en ASCII et ignorer les caractères qui n'existent pas en ASCII:

print '\n'.join(x.encode('ascii', 'ignore') for x in your_list) 
1

Si vous allez faire quelque chose de significatif avec votre sortie, vous devez décider quel codage de sortie que vous voulez. Jeter tous ces personnages non-ascii n'est même pas la deuxième meilleure solution. Decide pour un codage de sortie correspond le (par exemple pour la sortie shell votre encodage shell, pour la sortie web encodage web, meilleur polyvalent est UTF-8) et codez appropiately: ', '.join(x.encode('utf-a') for x in your_list) (En-/Decoding)