Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

convertir une liste en majuscules sans accent

4 réponses
Avatar
+-- 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à !

4 réponses

Avatar
Doug713705
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 ]
Avatar
Alain Ketterlin
+-- SenoN --+ writes:

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.
Avatar
+-- SenoN --+
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à !
Avatar
Encolpe Degoute
+-- 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