convertir une liste en majuscules sans accent

Le
+-- SenoN --+
Bonjour,

J'ai le petit souscis suivant : je veux convertir une liste de type
t=['gfhé','kkà'] en une liste avec majuscules sans accent
['GFHE','KKA']

Donc, je fais :

for f in t:
t[f].ascii_uppercase()

Et j'ai l'erreur suivante :

t[f].ascii_uppercase()
TypeError: list indices must be integers, not str

Pouvez-vous me dire ce qui ne va pas ?
Merci

--
+-- SenoN --+
http://senon.free.fr/
senon_a_supprimer@free.fr

Si l’on n’est plus que mille, eh bien, j’en suis ! Si même
Ils ne sont plus que cent, je brave encor Sylla ;
S’il en demeure dix, je serai le dixième ;
Et s’il n’en reste qu’un, je serai celui-là !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Doug713705
Le #21099221
Dans fr.comp.lang.python +-- SenoN --+ nous expliquait:

for f in t:
t[f].ascii_uppercase()

Et j'ai l'erreur suivante :

t[f].ascii_uppercase()
TypeError: list indices must be integers, not str

Pouvez-vous me dire ce qui ne va pas ?
Merci



Dans ton exemple f n'est pas l'indice de l'item mais sa valeur.
Il faut donc faire f.ascii_uppercase() (sous réserve que cela soit ce
que tu veuilles faire).

--
@+
Doug - Linux user #307925 - Slackware64 roulaize ;-)
[ Plus ou moins avec une chance de peut-être ]
Alain Ketterlin
Le #21099861
+-- SenoN --+
J'ai le petit souscis suivant : je veux convertir une liste de type
t=['gfhé','kkà'] en une liste avec majuscules sans accent
['GFHE','KKA']

Donc, je fais :

for f in t:
t[f].ascii_uppercase()

Et j'ai l'erreur suivante :

t[f].ascii_uppercase()
TypeError: list indices must be integers, not str

Pouvez-vous me dire ce qui ne va pas ?



Presque tout : ascii_uppercase n'est pas une fonction (c'est une chaîne
de caractères constantes), tu n'as pas compris ce que signifie "for f in
t" (ici t[f] n'a pas de sens), et tu as oublié que tu devais construire
une nouvelle liste plutôt que d'essayer de taper dans la liste
originale. En plus, il ne suffit pas de mettre en majuscules, il faut
d'abord remplacer les caractères accentués par leur "équival ent" sans
accent.

Bon, on a vraiment l'impression que tu nous demandes de faire tes
devoirs. On ne le fera pas. Mais on peut te filer un coup de main si tu
as des questions précises. Commence par choisir un des deux problà ¨mes
suivants :
1) transformer une (seule) chaîne de caractères correctement
2 transformer une liste en une autre (en faisant une transformation
simple sur chaque chaîne, par exemple ajouter un 'x' à la fin ave c +)

-- Alain.
+-- SenoN --+
Le #21101341
Si tu maitrises Python, tant mieux pour toi.
Par contre, évite d'être hautin dans tes réponses, car ton manque de
courtoisie ne donne pas une bonne image de toi.

--
+-- SenoN --+
http://senon.free.fr/


Si l’on n’est plus que mille, eh bien, j’en suis ! Si même
Ils ne sont plus que cent, je brave encor Sylla ;
S’il en demeure dix, je serai le dixième ;
Et s’il n’en reste qu’un, je serai celui-là !
Encolpe Degoute
Le #21101651
+-- SenoN --+ a écrit :
Bonjour,

J'ai le petit souscis suivant : je veux convertir une liste de type
t=['gfhé','kkà'] en une liste avec majuscules sans accent ['GFHE','KKA']

Donc, je fais :

for f in t:
t[f].ascii_uppercase()

Et j'ai l'erreur suivante :

t[f].ascii_uppercase()
TypeError: list indices must be integers, not str

Pouvez-vous me dire ce qui ne va pas ?



En dehors des remarques précédentes qui semblent justifiées ce que tu
cherches à faire ressemble à la fonction normalize du module unicodedata.

Pour la partie syntaxe python, la boucle 'for' décompose déjà ton
tableau en éléments contrairement à d'autres langages.

>>> tableau = list('1', '2', '3')
>>> for element in tableau:
>>> print element
>>>
1
2
3


Pour utiliser des indices il y a la fonction range(debut, fin) :

>>> range(0, 3)
[0, 1, 2]


Pour ce genre de problème il serait sans plus facile de passer par de la
messagerie instantanée comme IRC:
serveur: irc.freenode.net
canal : #python-fr

--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales
Publicité
Poster une réponse
Anonyme