J'ai ceci:
>>> print 'example'
example
>>> print 'exámple'
exámple
>>> print 'exámple'.upper()
EXáMPLE
Ce que je dois faire pour imprimer:
EXÁMPLE
(où le 'A' obtient son accent d'accueille, mais en majuscule.
J'utilise Python 2.6.
Je pense que c'est aussi simple que non Conversion de ASCII en premier.
>>> print u'exámple'.upper()
EXÁMPLE
IN python 2.x, il suffit de convertir la chaîne en unicode avant d'appeler la tige supérieure (). Utilisation de votre code, qui est au format UTF-8 sur cette page Web:
>>> s = 'exámple'
>>> s
'ex\xc3\xa1mple' # my terminal is not utf8. c3a1 is the UTF-8 hex for á
>>> s.decode('utf-8').upper()
u'EX\xc1MPLE' # c1 is the utf-16 aka unicode for á
L'appel à decode
prend de son format actuel à UNICODE. Vous pouvez ensuite le convertir en un autre format, comme UTF-8, à l'aide de l'encode. Si le personnage était dans, disons, ISO-8859-2 (tchèque, etc., dans ce cas), vous utiliseriez plutôt s.decode('iso-8859-2').upper()
.
Comme dans mon cas, si votre terminal n'est pas unicode/UTF-8 conforme, le mieux que vous puissiez espérer, soit une représentation hexagonale des caractères (comme la mine) ou de la convertir à l'aide de s.decode('utf-8').upper().encode('ascii', 'replace')
, qui Résultats dans 'Ex? Mple'. Si vous ne pouvez pas créer votre terminal Afficher Unicode, écrivez la sortie dans un fichier au format UTF-8 et ouvrez cela dans votre éditeur préféré.
Je pense qu'il y a un peu de contexte nous manquons ici:
>>> type('hello')
<type 'str'>
>>> type(u'hello')
<type 'unicode'>
Tant que vous utilisez des chaînes "unicode" au lieu de cordes "natif", les opérateurs comme Upper () fonctionneront avec unicode à l'esprit. FWIW, =Python 3 utilise UNICODE par défaut, en faisant la distinction largement non pertinente.
Prendre une chaîne de unicode
à str
_ puis retour à unicode
est sous-optimal à bien des égards et de nombreuses bibliothèques produiront une sortie Unicode si vous le souhaitez; Essayez donc d'utiliser uniquement unicode
objets pour les chaînes interne chaque fois que vous le pouvez.