无法计算 python 中文本文件的行数

Cannot count the number of lines in a text file in python

最近我一直在研究 GUI python 纯文本编辑器。该代码调用以下函数,该函数应该计算已输入文本小部件的行数:

def numlines():
    targetline = textPad.get(1.0, END)
    targetline.split()
    lines = 0
    for line in targetline:
        lines += 1
    return lines

代码运行了,但是它没有给我正确的文件行数。事实上,每行的字母数和空格似乎会影响行数(例如:在两行中输入两个字母。我得到 6 行)。我找不到这个问题的解释。

我 运行 在 Windows 7 使用 python 2.7.9 和 tkinter。

替换:

targetline.split()
lines = 0
for line in targetline:
    lines += 1
return lines

有:

return len(targetline.split('\n'))

例子

让我们创建一个例子targetline:

>>> targetline="line 1\nline 3\nline 3"
>>> print targetline
line 1
line 3
line 3

现在,让我们数数行数:

>>> len(targetline.split('\n'))
3

我在这里没有解决的一个问题是 textPad.get 实际上是 returns。它是否使用 \n 作为行分隔符?它是否在最后一行提供了最终的 \n ?在代码正确之前,您需要解决这些问题。

讨论

考虑这一行:

targetline.split()

让我们将其应用于上面的示例:

>>> targetline.split()
['line', '1', 'line', '3', 'line', '3']

有两点需要注意:

  1. 它默认在所有空白处拆分。

  2. 它returns一个列表。它不会改变 targetline.

现在考虑:

lines = 0
for line in targetline:
    lines += 1
return lines

由于 targetline 未被 split 改变,for 循环遍历 targetline 中的每个字符。因此,此循环计算 targetline.

中的每个字符

它只是想要一个对象的长度,不需要这样的循环。 len函数更简单。