首页 > 解决方案 > 为什么我每隔一条线?

问题描述

我正在尝试创建一个 Python 代码来计算每行文本的字数。

我的文字由以下电影标题组成:

我们仍然在偷老路
恶魔
不朽的战争
门户网站
来自地狱的自拍
坏修女
天文
Diggerz:黑肺上升
战斗无人机
如何驯龙高手 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)

我得到的是:

恶魔
['恶魔\n']
1

门户网站
['The', '门户\n']
2

坏修女
['The','Bad','Nun\n']
3

Diggerz:黑肺上升
['Diggerz:', 'Black', 'Lung', 'Rises\n']
4

如何驯龙高手 3
['How', 'to', 'Train', 'Your', 'Dragon', '3\n']
6

我的问题是: 我怎样才能得到上面每部电影的结果?这里的结果显示了所有其他电影标题的结果。

标签: pythoncountword

解决方案


您的代码以:

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....保证您的文件在脚本中发生的任何事情都会关闭的习语。


推荐阅读