python中文本文件的打印行在打印时创建折断线

时间:2014-02-24 14:41:28

标签: python

我是python的新手,我正在尝试读取一个简单的txt文件的每一行,但是当在终端中打印出结果时,在每一行之间都有一个空行,在txt文件中不存在我使用strip()方法来避免该行,这是代码:

ins = open( "abc.txt", "r" )
array = []
for line in ins:
    array.append( line )
ins.close()

for riga in array:
    if line.strip() != '':
        print riga

这是txt文件:

a
b
c

这是终端的结果:

a

b

c

我无法理解为什么在a,b,c,任何想法之间创建空行?

3 个答案:

答案 0 :(得分:3)

因为文本文件中的所有内容都是字符,所以当您看到类似的内容时:

a
b
c

它的实际上 a\nb\nc\n\n表示新行,这就是你获得额外空间的原因。如果您想将文本文件中的所有内容按照原样打印到输出控制台,我会修复您的print语句,如下所示:

print riga,

这可以防止添加额外换行符\n

答案 1 :(得分:0)

这应该是:

for riga in array:
    if line.strip() != '':
        print riga

此:

for riga in array:
    if riga.strip() != '':     # <= riga here not line 
        print riga.strip()     # Print add a new line so strip the stored \n

或者更好:

array = []
with open("abc.txt") as ins:
    for line in ins
        array.append(line.strip())

for line in array:
    if line:
        print line

答案 2 :(得分:0)

当你运行line.strip() != ''时,我认为这并不是你所期望的。

  • 它调用strip()上的line字符串方法,该方法将是文件的最后一行,因为您已经迭代了之前line中的所有for }循环,将line变量分配给最后一个。
  • 然后检查line返回的剥离字符串是否不等于''
  • 如果符合该条件,则会打印riga

您需要在要打印的字符串上运行strip(),然后存储结果或立即打印,为什么不在这样的for循环中完成所有操作:

array = []
with open("abc.txt", "r") as f:
    for line in f:
       array.append(line.strip())
       print(array[-1])