2017-10-13 19 views
2

Utilisation de Python 3.6 et Spyder. Celui-ci me rend fou et devrait être facile, mais je suis perplexe. J'essaie d'ouvrir un fichier texte et de créer une liste des lignes. J'essaie de séparer les lignes en fonction des périodes. Je veux être capable de faire quelque chose comme list_of_lines [25]. Je reçois toujours l'erreur suivante AttributeError: l'objet '_io.TextIOWrapper' n'a pas d'attribut 'decode'. J'ai essayé d'ouvrir le fichier normalement, puis d'utiliser .split(), mais j'ai continué à recevoir des erreurs ascii.Essayer d'ouvrir un fichier texte et créer une liste de lignes séparant les phrases entre les deux.

Toutes les suggestions ou me pointant dans la bonne direction serait génial.

with open("SORROWS_OF_YOUNG_WERTHER.txt") as book: 
    text_file = book.decode('ascii') 
    list_of_lines = [word.split('.') for word in text_file.readlines()] 
    print(list_of_lines) 

Répondre

1

À moins que vous ouvrez avec le drapeau binaire 'b'. Le fichier est déjà du texte, il n'y a donc pas besoin de décoder.

Cela devrait bien:

with open("SORROWS_OF_YOUNG_WERTHER.txt") as book: 
    list_of_lines = [line.decode('utf-8').split('.') for line in book.readlines()] 
    print(list_of_lines) 

Soyez conscient que la sortie va cependant diviser chaque ligne à chaque période.

+0

Merci! C'est ce que je pensais aussi. Lorsque j'ai essayé d'utiliser la méthode split() avec le fichier non décodé, j'ai reçu une erreur pour les caractères non reconnus. – Eric

+1

Etes-vous sûr que votre entrée est ascii alors? Ce pourrait être un autre encodage. –

+0

Ceci est l'erreur. UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xe2 en position 1236: ordinal pas dans la plage (128) – Eric