读取文本文件后,Python程序打印一个空白行

时间:2019-06-10 17:17:43

标签: python

我正在做一些简单的python练习,目标是只读取一个文本文件然后打印它。但是我的程序多打印了一行空白行。

此处显示的文本文件是model.txt,其中包含3个文本行和1个空白行

First row
Second row
This is the third row

我的程序是

file1=open("model.txt","r")
while True:
    row=file1.readline()
    print(row[:-1])
    if row=="":
        break
file1.close()

现在所需的打印结果是:

First row
Second row
This is the third row

但是在打印之后有一个额外的空白行:

First row
Second row
This is the third row

有一种方法可以删除该空白行,但我一直无法弄清。

3 个答案:

答案 0 :(得分:2)

这是因为您的循环还不够break。像这样读取文件:

with open('model.txt', 'r') as file1:
  for line in file1.readlines():
      trimmed_line = line.rstrip()
      if trimmed_line: # Don't print blank lines
          print(trimmed_line)

with语句将自动关闭文件,而rstrip()则删除\n和句子末尾的空格。

答案 1 :(得分:1)

默认情况下,print()将LF添加到打印的每一行,因此,如果您的print(row[:-1])为空(row[:-1]为空字符串),那么您仍然会得到该行为。解决方法是替换

print(row[:-1])

使用

val = row[:-1]
if val: 
    print(val)

因此不会打印空值。

答案 2 :(得分:0)

SELECT COUNT(CustomerID) AS Total, Country
FROM Customers
WHERE regex_like(Country, '^[ugf]','c')
GROUP BY Country
HAVING Total > 5
ORDER BY Total DESC;

因为读取了换行符,所以它也可以用行打印,不需要行[:-1]

这里需要留'end'选项,因为我需要阅读此页面,过滤掉一些python2的内容,然后尝试了解它的作用;) How to print without newline or space?