【问题标题】:Why am I getting every other line?为什么我每隔一条线?
【发布时间】:2019-03-03 06:43:20
【问题描述】:

我正在尝试创建一个 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

我的问题是: 如何获得上述每个电影标题的结果? 这里的结果显示了所有其他电影标题的结果。

【问题讨论】:

  • 使用循环。阅读一些文档并在 stackoverflow 上查看类似问题。
  • 您在此处提供给我们的代码无法读取超过文件第一行的内容。因此,请粘贴您运行的确切代码和获得的确切输出。
  • 你是对的。我通过添加来编辑代码:for x in f:

标签: python count word


【解决方案1】:

您的代码以:

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

您在for 循环中逐行迭代您的文件f。但是一旦文件中的下一行被读入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.... 习惯用法,它保证无论脚本中发生什么,您的文件都会被关闭。

【讨论】:

  • 非常感谢您的友好回答,帮助我避免熬夜。
  • 不客气! :) 如果您认为某个答案已经解决了您的问题,您可以通过检查左侧的标记来接受它和/或在您有足够的声誉后对其进行投票。享受你的夜晚!
猜你喜欢
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多