Alors voici ce que j'aie fait dans l'interpréteur python
saltz@saltz-OptiPlex-780:~$ python3
Python 3.6.8 |Anaconda custom (64-bit)| (default, Dec 30 2018, 01:22:34)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import string
>>> string.hexdigits
'0123456789abcdefABCDEF' # ok la machine me renvoie quelque chose
>>> test = Formatter() # 1 ère tentative je voudrais crée une instance test mais cela ne fonctionne pas
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Formatter' is not defined
>>> Formatter.parse('A1213pokl') # 2 ème tentative je voudrais transformer la string A1213pokl en tuple afin de pouvoir boucler dedans plus tard ...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Formatter' is not defined
>>>
Pour l'instant , la doc python , je n'accroche pas ; je la trouve abstraite et donc toutes les très fonctions qui sont dedans aussi ....
Mieux connaitre la philosophie du langage (s'accrocher ça prend relativement du temps)
Pour ce qui est du présent exemple tu as importé le module string ce qui te permet d'accéder à son contenu mais pas de la manière dont tu le fais:
#option 1 (importe l'accès au module via string.attribute c'est souvent préférable pour éviter au maximum les conflits de noms)
import string
i = string.Formatter()
i.parse("banane")
#option 2 (importe seulement Formatter en local)
from string import Formatter
i = Formatter()
i.parse("banane")
#option 3 (importe l'ensemble du module en local)
from string import *
i = Formatter()
i.parse("banane")
après c'est une classe très peu utilisée, et parse, je ne sais pas s'il est intéressant pour vous, mais si vous voulez découvrir la documentation, vous êtes pas tombé sur l'exemple le plus facile pour l'apprendre, car on utilise une chaîne de caractères assez spécifique représentant le formatage de chaînes.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Et pourquoi cela renvoie une instance d'objet et pas un tuple ?De ce que je comprend de la fonction parse , elle est censée renvoyer
un itérable de tuples ...
En gros je m'attendais un tuple de ce genre
mon_tuple = i.parse("banane")
print(mon_tuple)
>>>(b,a,n,a,n,e) # mais je n'obtiens rien de tout cela ...
et le type de l'objet quand je regarde dedans avec la fonction type() n'est pas un tuple mais un <class 'formatteriterator'>
Là c'est plus un problème de langue française qu'autre chose. Si ça renvoie "un itérable de tuples", ça renvoie... Un itérable, qui contient des tuples.
Après, ton premier post laisse penser que tu es plutôt débutant, donc c'est normal que la doc soit difficile à aborder à ce stade, parce qu'elle suppose une connaissance du langage que tu n'as pas encore.
Effectivement , je viens de m'apercevoir qu'il me manque la notion d'itérables (et son corollaire les notions d'itérateurs générateur) .
Finalement j'aie trouvé ceci en python
motdepasse = '564ffg64'
for caracters in motdepasse:
print(caracters)
Je pensais qu'il fallait que je transforme ma string en tuple ou en liste pour pouvoir itérer dedans .Mais non ....
Ceci étant , je ne comprend toujours pas à quoi la fonction
parse
sert concretement intégrée à un programme avec un but clair ? Je me suis fié au mot anglais qui traduit en français veut dire "analyser" , "faire l'analyse grammaticale" .Donc choisir cette fonction m'a parut probant pour analyser une string .
Pour l'instant mon problème de fond n'est pas résolu , je ne sais toujours pas lire une doc python .Par effet de bord , j'aie le même problème avec tous les nouveaux modules et les docs qui les accompagnent .C'est souvent difficile de comprendre l'utilité des fonctions qui sont dedans .
Finalement après relecture des différents intervenants voici mon exemple , ou je trouve le résultat plus exploitable .
Ce que je reproche aux docs , c'est l'absence d'exemple . Quelquefois les fonctions ont besoin de s'articuler entre elle .
La il me manquait la fonction list pour avoir un objet exploitable que m'a indiqué thelinekioubeur
#! /usr/bin/python
# -*- coding: utf-8 -*-
#option 1 (importe l'accès au module via string.attribute c'est souvent préférable pour éviter au maximum les conflits de noms)
import string
i = string.Formatter()
i.parse("banane")
#option 2 (importe seulement Formatter en local)
from string import Formatter
i = Formatter()
i.parse("banane")
#option 3 (importe l'ensemble du module en local)
from string import *
i = Formatter()
mon_iterable= i.parse("banane")
une_liste_de_tuples = list(mon_iterable)
print(une_liste_de_tuples)
Je suis toutefois surpris de la tête de ma liste avec un tuple dedans qui m'affiche 3 none supplémentaires .
Bien sur on n'utilise jamais cette deuxième version, mais la première.
En bref comme dit a doc, la classe Formatter est donnée pour pouvoir définir nos propres comportements de formatage. Mais si tu débute ce n'est clairement pas utile pour le moment. Moi même je n'en ai jamais eu besoin, str.format étant déjà suffisant.
J'ai pensé que tu as peut-être été trompé par le nom "string" de ce module. Le type python pour les chaînes de caractères c'est str, pas string.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
après c'est une classe très peu utilisée, et
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Blond, bouclé, toujours le sourire aux lèvres...