Почему я получаю все остальные строки? - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь создать код Python для подсчета количества слов в строке текста.

Мой текст состоит из следующих названий фильмов:

We Still Steal the Old Way
Demon
Immortal Wars
The Portal
Selfie from Hell
The Bad Nun
Astro
Diggerz: Black Lung Rises
Battle Drone
How to Train Your Dragon 3

Код, который я создал, выглядит следующим образом:

f = open('C:/movies/sample06.txt') 
for x in f: 
    line = f.readline()
    print(line, end='')
    words = line.split(" ")
    print(words)
    num_words = len(words)
    print(num_words)

И я получаю:

Demon
['Demon\n']
1

The Portal
['The', 'Portal\n']
2

The Bad Nun
['The', 'Bad', 'Nun\n']
3

Diggerz: Black Lung Rises
['Diggerz:', 'Black', 'Lung', 'Rises\n']
4

How to Train Your Dragon 3
['How', 'to', 'Train', 'Your', 'Dragon', '3\n']
6

Мой вопрос: Как я могу получить результаты для каждого названия фильма выше?Результат здесь показал результаты каждого другого названия фильма.

1 Ответ

0 голосов
/ 03 марта 2019

Ваш код начинается с:

f = open('C:/movies/sample06.txt') 
for x in f: 
    line = f.readline()

Вы перебираете файл f строка за строкой в ​​цикле for.Но как только следующая строка в файле будет прочитана в x, вы прочитаете следующую в line.Поскольку вы ничего не делаете с x, эта строка теряется.

Таким образом, вам не нужно использовать readline() для итерации строк вашего файла.Просто выполните:

with open('C:/movies/sample06.txt') as f: 
    for line in f: 
        print(line, end='')
        words = line.split(" ")
        print(words)
        num_words = len(words)
        print(num_words)

Обратите внимание на идиому with open...., которая гарантирует, что ваш файл закроется независимо от того, что происходит в вашем скрипте.

...