为什么我得到其他所有线路?

时间:2019-03-03 06:43:20

标签: python count word

我正在尝试创建一个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 :(得分:1)

您的代码开头为:

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....惯用法,该惯用法可确保关闭文件,无论脚本中发生什么情况。