IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Lire un fichier texte et trier ce fichier


Sujet :

Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Lire un fichier texte et trier ce fichier
    Bonjour à tous,
    Je n'ai que très peu de base en Python et je dois effectuer un travail dont je ne sais comment y parvenir dont voici l'énoncé:

    Le roman "Moby Dick" de l'écrivain américain Herman Melville est accessible gratuitement sur le site du projet Gutenberg. Téléchargez-le au format texte à l'adresse suivante : https://www.gutenberg.org/files/2701/2701-0.txt

    Question 1
    Créez un script Python qui écrira chaque chapitre du roman dans un fichier texte individuel. Votre programme devra ainsi produire 136 fichiers, pour les 135 chapitres et l'épilogue. Ces fichiers devront être nommés "chapitre_1.txt", "chapitre_2.txt", ..., et "epilogue.txt".

    Question 2
    Créez un script Python capable de comparer deux chapitres (déjà séparés dans deux fichiers .txt) et de lister les mots présents dans l'un et absents dans l'autre. Afin que ni les majuscules, ni les caractères de ponctuation ne créent de différences, vous utiliserez les méthodes var.lower() et var.replace(), où var est une variable de type str.

    Pouvez-vous m'aider pour parvenir à l'effectuer, ne serait-ce que de trouver le début d'un script ? Merci à vous.

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 920
    Points : 7 312
    Points
    7 312
    Par défaut
    Bonsoir,

    Si tu es étudiant(e), selon moi, tu devrais déjà commencer par expliquer ce que tu as appris, ce que tu as le droit d'utiliser comme modules python, et ce dont tu n'as pas le droit.

    As-tu eu des explications un peu guidées sur la ou les manières de prendre le problème ? Si oui, il serait bien de nous là donner aussi...

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Bonsoir, j'utilise la plateforme geany et je n'ai pas de restriction quant à la résolution de cet exercice nous avons vu que les bases de Python donc je ne possède vraiment pas un bon niveau jusqu'ici. Merci d'avance pour toute aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Peut-être qu'en utilisant le module os et la fonction open() pour la question 1
    Sinon pour la question 2, je ne vois pas l'intérêt d'utiliser replace() si c'est juste de la comparaison. Tu peux faire en sorte d'utiliser os à nouveau pour obtenir les fichiers et ensuite les comparer !

    http://www.w3big.com/fr/python/os-listdir.html

    https://python.developpez.com/cours/...=page_11#L11-E

    Après je ne vais pas t'aider d'avantage sinon on va encore me gronder !

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 920
    Points : 7 312
    Points
    7 312
    Par défaut
    Citation Envoyé par VickyLim Voir le message
    Bonsoir, j'utilise la plateforme geany et je n'ai pas de restriction quant à la résolution de cet exercice nous avons vu que les bases de Python donc je ne possède vraiment pas un bon niveau jusqu'ici. Merci d'avance pour toute aide
    À mon sens, il devrait y avoir restrictions, car si on admettait le fait que je te donne un code, il y a de grandes chances, qu'il ne soit utile que pour générer tes fichiers, y placer tes chapitres. Mais que devient l'apprentissage ? Comment vas-tu expliquer ton code à tes professeurs, tes camarades ? Que comprendras-tu des méthodes avancées du langage ?

    Il est vraiment conseillé d'y donner un cadre... on peut te guider, mais si je te dis de lire un fichier avec mmap, est-ce que ça aidera ?

    Et les bases pour moi, ne sont peut-être pas les bases pour toi

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 362
    Points : 36 894
    Points
    36 894
    Par défaut
    Salut,

    Citation Envoyé par VickyLim Voir le message
    nous avons vu que les bases de Python donc je ne possède vraiment pas un bon niveau jusqu'ici. Merci d'avance pour toute aide
    Au départ, ce qu'on vous demande est de "programmer". Découper le gros fichier en chapitres suppose déjà décrire comment on envisage s'y prendre.

    C'est peut être l'occasion de revoir ce qu'on peut faire avec des fichiers texte et les chaines de caractères (puisque lire un fichier texte, c'est récupérer une ou des chaines de caractères). Les exercices que vous avez déjà fait devraient vous aider à écrire des premières lignes de code. Et si elles ne fonctionnent pas essayer de comprendre ce qui ne va pas.
    Après, si vous en avez marre de patauger, poster ici ce que vous avez essayé et raconter ce qui vous échappe pourra vous aider. Mais si vous ne commencez pas par essayer de faire quelque chose par vous même, vous n'arriverez à rien (vous aurez juste une note non méritée et pas appris grand chose).

    - W

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 726
    Points : 31 046
    Points
    31 046
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par LeNarvalo Voir le message
    Après je ne vais pas t'aider d'avantage sinon on va encore me gronder !
    Je pense que tu fais référence à ce post. En fait tu n'as pas bien saisi la signification du verbe "aider". Aider ce n'est pas proposer un code tout fait à un élève qui pourra le présenter comme le sien sans rien comprendre et qui se plantera le jour du contrôle... et qui arrivera éventuellement ensuite dans la vie réelle sans savoir rien faire de ses dix doigts et qui ne sera qu'un boulet pensant qu'il n'y a qu'à demander sur le net pour qu'on fasse son job.
    Dans la discussion citée wiztrics a été le premier à répondre et j'ai enchainé. Vu la facilité du truc tu penses bien que tous deux aurions parfaitement pu donner le code mais nous ne l'avons pas fait et le faisons jamais à la première réponse. On attend de voir comment évolue la discussion pour éventuellement ensuite, quand le PO montre ce qu'il a fait, lui proposer des solutions d'amélioration.

    Tu as parfaitement le droit d'aider, et c'est même ce qu'on demande aux intervenants, mais aider "utile". Par exemple la question 2 demande une liste des mots qui sont dans A mais pas dans B (et probablement aussi l'inverse enfin si je devais la coder c'est ainsi que je le verrais) tu peux par exemple donner un petit exemple montrant comment extraire de deux listes de mots X et Y les mots qui sont dans X mais pas dans Y. Ensuite charge au PO de prendre cet exemple, l'étudier, le comprendre pour l'adapter à son... projet. Ca c'est aider utile.

  8. #8
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 405
    Points
    8 405
    Par défaut juste une parenthèse
    Aider ce n'est pas proposer un code tout fait à un élève qui (...) se plantera le jour du contrôle...
    c'est intéressant parce qu'on pourrait facilement réutiliser le même argument dans l'autre sens et objecter que ce faisant on se substitue à la responsabilité de l'individu, on prend soin de l'aiguiller sur le bon chemin malgré lui sans lui laisser le choix, là où au contraire se planter éventuellement le jour du contrôle s'apparenterait à une bonne leçon ; il passerait ainsi d'un fonctionnement dogmatique : "il ne faut pas recopier le code sans le comprendre (mais j'ai envie quand même)", à une réelle compréhension : "parce que je n'en tire aucun savoir et que le savoir est bien plus précieux qu'une note ponctuelle" ou "parce que la note dépend plus de ce que je sais que de la validité du code que je fournis" (au choix...)

    à l'inverse je plébiscite, sur ce point spécifique, un individualisme vertueux décomplexé : chacun se préoccupant de trouver un intérêt personnel, "égoïste", à répondre sur les sujets, et le PO faisant ou non l'effort d'en extirper ce qu'il y a d'intéressant, préciser sa question, reformuler etc. sans quoi les bonnes volontés pourraient déserter le sujet ou répondre à côté etc.
    c'est donc une perspective périmétrique doublement vertueuse puisque les aidants se préoccupent uniquement de conserver leur goût à aider, tandis que le demandeur d'aide doit légitimement fournir un effort pour être "aidé" sans risque de glisser vers un statut d'"assisté", une plus juste répartition des tâches, moins infantilisante, plus responsabilisante pour celui qui a une question, plus ludique pour celui qui répond.

    </parenthèse>

  9. #9
    Invité
    Invité(e)
    Par défaut
    @BufferBob
    C'est des vieux c¤ns, c'est tout !

    Si tu balances un code et qu'ensuite tu n'expliques rien où tu n'es pas prêt à répondre aux questions du PO, là oui c'est pas tellement pédagogique.

  10. #10
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 920
    Points : 7 312
    Points
    7 312
    Par défaut
    @BufferBob,

    Ce n'est quand même pas la mer à boire de chercher un peu, créer un code minimal et testable, afin d'y introduire sa problématique. On peut demander ça à un étudiant, non ?

    Après, je doute sur la pédagogie quand un étudiant arrive, et te demande de créer le code à sa place, car il n'a rien trouvé, et qu'il se présente ici sans code.

    Il y a un juste milieu, je sais que la paresse fait partie de la nature de l'Homme, mais bon...

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 362
    Points : 36 894
    Points
    36 894
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Il y a un juste milieu, je sais que la paresse fait partie de la nature de l'Homme, mais bon...
    C'est pour arbitrer ce genre de discussions très ouvertes qu'on écrit des règles.

    Dans lesquelles on lit ce qu'on attend des débutants qui demandent de l'aide pour faire leurs exercices.

    Comme toutes les règles, il n'est pas forcément judicieux de les suivre à la lettre mais c'est un point de départ clairement affiché qu'on ne peut ignorer.

    - W

  12. #12
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Bonjour à tous,
    Premièrement je ne tiens pas à créer de discorde sur le forum . Mais il est vrai que je tiens à utiliser un code dont je comprends le fonctionnement cependant n'ayant pas trouvé un par moi-même c'est vers vous que je me tourne pour ne serait-ce que me donner quelques pistes car je sèche complètement sur cet exercice. Voici un début d'idée dans lequel je tente de créer une liste de mots où les mots avec ou sans ponctuation sont comptés comme pareils mais je ne vois pas du tout comment créer des fichiers avec les chapitres et leur contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    mon_dico = {}
     
    with open("moby_dick.txt", "r") as filein:
    	for ligne in filein:
    		ligne_sans_retour = ligne.strip("\n")
    		liste_mots = ligne_sans_retour.split()
     
    		for mot in liste_mots:
    			mot = mot.lower()
    			mot = mot.replace(',', '')
    			mot = mot.replace('!', '')
    			mot = mot.replace('.', '')
    			mot = mot.replace('"', '')
    			mot = mot.replace(';', '')
    			mot = mot.lower()
    			print(mot)
    			mon_dico[mot] = 1
    Si quelqu'un veut bien m'aiguiller ce serait très gentil.

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 362
    Points : 36 894
    Points
    36 894
    Par défaut
    Citation Envoyé par VickyLim Voir le message
    mais je ne vois pas du tout comment créer des fichiers avec les chapitres et leur contenu
    Ce qui est bien c'est de voir que vous savez déjà lire un fichier ligne à ligne. Si vous voulez le découper en chapitre vous pouvez déjà chercher les lignes qui commencent par "CHAPITRE " et utiliser cette condition pour fabrique les différents fichiers.

    Après pour le code que vous avez posté, je ne l'aurais pas écris comme çà mais pourquoi pas: vous devez essayer de voir par vous même si çà fonctionne ou pas.

    - W

  14. #14
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Savez-vous quelle fonction utiliser pour créer des fichiers à partir d'un fichier ?

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 362
    Points : 36 894
    Points
    36 894
    Par défaut
    Citation Envoyé par VickyLim Voir le message
    Savez-vous quelle fonction utiliser pour créer des fichiers à partir d'un fichier ?
    La fonction s'appelle "open" (et vous l'utilisez déjà) mais il va falloir ajouter un peu de code autour pour qu'elle fasse le boulot attendu.

    - W

  16. #16
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    En regardant le site que tu m'as donné je ne comprends pas comment utiliser la fonction "os" peux-tu m'en dire plus stp ?


    Citation Envoyé par LeNarvalo Voir le message
    Peut-être qu'en utilisant le module os et la fonction open() pour la question 1
    Sinon pour la question 2, je ne vois pas l'intérêt d'utiliser replace() si c'est juste de la comparaison. Tu peux faire en sorte d'utiliser os à nouveau pour obtenir les fichiers et ensuite les comparer !

    http://www.w3big.com/fr/python/os-listdir.html

    https://python.developpez.com/cours/...=page_11#L11-E

    Après je ne vais pas t'aider d'avantage sinon on va encore me gronder !

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par VickyLim Voir le message
    Savez-vous quelle fonction utiliser pour créer des fichiers à partir d'un fichier ?
    Une liste, je te conseille de faire autant pour stocker les chapitres.

    Juste pour information, il existe une autre façon d'utiliser open() moins belle probablement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    filein = open("moby_dick.txt", "r")
    txt = file.read() #ou readlines()
    filein.close()
    for line in txt:
    ...
    Comme évoquez par Wiz tu auras besoin de ça : https://www.learnbyexample.org/pytho...#basic-example pour savoir si le texte commence par "CHAPTER" ou pas.

    Sinon il y a des trucs à revoir ici : (Regarde bien le texte ! Et sache qu'il y a des ponctuations à la c¤n dans le monde de l'informatique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mot = mot.replace(',', '')
    mot = mot.replace('!', '')
    mot = mot.replace('.', '')
    mot = mot.replace('"', '')
    mot = mot.replace(';', '')
    Pour éviter ce genre d'oubli tu devrais peut-être penser à utiliser un petit module (à voir si tu as le droit) : https://docs.python.org/fr/2.7/libra...ng.punctuation mais il manque encore deux caractères voire plus... (C'est un filou ton prof !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> string.punctuation
    '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
    Et juste pour info tu peux mettre les replace à la suite : mot.replace(',', '').replace('!', '')... mais pareil c'est moins joli.
    Tu as moyen de faire un truc assez joli en 2 lignes pour remplacer les caractères avec un for ... in ... !

    En regardant le site que tu m'as donné je ne comprends pas comment utiliser la fonction "os" peux-tu m'en dire plus stp ?
    C'est un module os mais je ne pense pas que tu en auras besoin en faite.
    Je l'ai utilisé pour une fonction toute bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import os
    >>> chemin = os.path.expanduser('~\Desktop\TEST')
    >>> print(chemin)
    C:\Users\dieu\Desktop\TEST
    J'ai le fichier texte du livre sur mon bureau, mon script sauvegarde les chapitres dans le dossier TEST histoire de pas inonder mon bureau.

  18. #18
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 726
    Points : 31 046
    Points
    31 046
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Juste pour information, il existe une autre façon d'utiliser open() moins belle probablement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    filein = open("moby_dick.txt", "r")
    txt = file.read() #ou readlines()
    filein.close()
    for line in txt:
    ...
    Attention à ne pas trop dire de bêtises. file.read() et file.readlines() n'ont pas le même rôle et leur résultat ne se traite pas de la même façon. Tu devrais tenter un for line in file.read(): print("[%s]" % line) voir ce que ça te donne...

    Citation Envoyé par LeNarvalo Voir le message
    Sinon il y a des trucs à revoir ici : (Regarde bien le texte ! Et sache qu'il y a des ponctuations à la c¤n dans le monde de l'informatique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mot = mot.replace(',', '')
    mot = mot.replace('!', '')
    mot = mot.replace('.', '')
    mot = mot.replace('"', '')
    mot = mot.replace(';', '')
    import re; mot=re.sub(r"[!\.\";]", "", mot)...

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Attention à ne pas trop dire de bêtises. file.read() et file.readlines() n'ont pas le même rôle et leur résultat ne se traite pas de la même façon. Tu devrais tenter un for line in file.read(): print("[%s]" % line) voir ce que ça te donne...


    import re; mot=re.sub(r"[!.\";]", "", mot)...

    Oui je n'ai pas précisé, ce n'est pas la même chose read() et readlines() (je te conseille readlines())
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    >>> file = open('2.txt','r',encoding='utf8')
    >>> txt = file.readlines()
    >>> file.close()
    >>> for lines in txt[50:51]:
    	print(lines)
     
     
    CHAPTER 5. Breakfast.
     
    >>> file = open('2.txt','r',encoding='utf8')
    >>> txt = file.read()
    >>> file.close()
    >>> for letters in txt[50:55]:
        print(letters)
     
     
    W
    h
    a
    l
    e
    >>>
    Le module re c'est pas un peu l'artillerie lourde ?
    Je pensais plus à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> chap = "The Right Whale’s Head—Contrasted View."
    >>> for c in  [',',"'",'!','’','-','—','.']:
    	chap = chap.replace(c, ' ')
     
     
    >>> chap
    'The Right Whale s Head Contrasted View '

  20. #20
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 726
    Points : 31 046
    Points
    31 046
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Je pensais plus à :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> for c in  [',',"'",'!','’','-','—','.']:
    	chap = chap.replace(c, ' ')
    Oui, j'avais bien évidemment aussi cette solution mais comme tu parlais d'élégance...

    Mais bon, développons ta façon de voir. Déjà je ne t'ai pas déjà dit que la liste est inutile quand le tuple suffit???
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> for c in (',', "'", '!', '’', '-', '—', '.'):
    	chap = chap.replace(c, ' ')

    Et puis, une string étant déjà itérable...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> for c in ",\"!'-.":
    	chap = chap.replace(c, ' ')

    Et donc pour finir
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> for c in string.punctuation:
    	chap = chap.replace(c, ' ')

    Maintenant entre boucler n fois (avec chaque fois toute la chaine qui est traitée) ou passer par un module, fut-il de l'artillerie lourde mais qui optimisera le traitement de la chaine... Python peut tout faire par lui-même mais s'il a des modules qui font les mêmes choses plus vite, autant les utiliser. La grande force de Python c'est de pouvoir déléguer au maximum. Et là il s'agit d'un livre...

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/12/2005, 15h57
  2. [Applet] lire un fichier texte
    Par lebesnec dans le forum Applets
    Réponses: 2
    Dernier message: 07/07/2005, 10h09
  3. Réponses: 1
    Dernier message: 24/11/2004, 16h54
  4. [Fichier] Lire un fichier texte long
    Par _Eric_ dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 18/08/2004, 15h22
  5. Réponses: 2
    Dernier message: 26/05/2004, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo