0
votes

Erreur de création de nuage de mots dans Python: les indices de chaîne doivent être entiers

J'essaie de créer un mot nuage d'un fichier TXT avec ce code: xxx

comme dans le titre, il me donne une erreur: les indices de chaîne doivent être entiers sur Raw_File. Ajouter (ligne ['Texte']). J'ai essayé quelques méthodes différentes pour le faire fonctionner mais ce n'est pas le cas, alors je demande ici de l'aide.

Merci d'avance.


0 commentaires

3 Réponses :


1
votes

Remplacez xxx

avec xxx

lorsque vous faites ligne ["texte '] tu es Essayer de prendre l'élément "Texte" à partir de l'objet Ligne , mais la ligne est une chaîne, et "Texte" n'est pas un index valide pour un type de chaîne.

en fait ce que vous voulez serait normalement xxx

car il fait ce que vous semblez essayer de faire puis ferme le gestionnaire de fichiers à la fin plutôt que de le laisser Ouvert (comme vous le faites actuellement).

Vous allez alors avoir des problèmes car vous essayez de traiter une liste de lignes comme une chaîne, ce qu'elle n'est pas. Je vous suggère d'essayer d'écrire cette ligne par ligne et de travailler ce que vous voulez réellement faire. Stackoverflow finira par écrire tout ce code pour vous, mais cela ne vous aide pas vraiment à apprendre quoi que ce soit.


0 commentaires

0
votes

ligne à partir de fichier.read () lit un seul caractère. Vous souhaitez utiliser fichier.readlines () et itérer sur cela. Je ne sais pas pourquoi vous essayez d'utiliser la ligne comme dictionnaire ligne ["texte"] . C'est à quoi ressemble l'erreur, car vous ne pouvez pas accéder à la touche texte .


0 commentaires

0
votes

Vous faites quelques choses inutiles, sans lesquelles vous pouvez rendre votre code un peu plus simple. Le problème réel est de savoir comment vous indexation ligne ["texte '] , mais il y a aussi un problème avec la manière dont vous tournez ensuite brut_file dans mots .

Vous n'avez pas vraiment besoin fr = fichier.read () (de fichier.readlines () ). pour la ligne dans le fichier: fait la même chose pour vous.

Ajout des lignes alors à RAW_FILE , puis à l'aide de .Split ("") à ce sujet, tentera de scinder sur une liste des lignes, de donner vous votre prochaine erreur. Vous pouvez simplement diviser directement la ligne et ajouter cela à votre liste de mots .

Vous n'avez pas non plus besoin de changer mots dans word_list ou populaire_words dans toppl . IMHO Cela ne fait que crée simplement plus de variables et rend le code moins lisible. xxx


0 commentaires