使用python从文件中删除空行

时间:2015-07-18 18:11:26

标签: python-2.7

我正在尝试从文本文件中删除空白行。以下是我对它的看法

aa=range(1,10)
aa[3]=""
print aa
[1, 2, 3, '', 5, 6, 7, 8, 9]

for i in range(0,len(aa)):
    if aa[i]=="":
        del aa[i]
print lines
[1, 2, 3, 5, 6, 7, 8, 9]

现在我正在尝试在文本文件上复​​制相同的方法以删除空白行,但它无效。

f=open("sample.txt",'r')
lines=[]
for i in f:
    lines.append(i)

print lines
['In this 30th match\n', '\n', 'there will be no1 winner']

for i in range(0,len(lines)):
    if lines[i]=="":
        del lines[i]

print lines
['In this 30th match\n', '\n', 'there will be no1 winner']

2 个答案:

答案 0 :(得分:1)

您可以使用if lines[i].isspace():代替if lines[i]=="":

实施例

>>> 'hello'.isspace()
False
>>> '\n'.isspace()
True

这应该可以正常工作:

your_file=open("file_name.ext")
without_blanks=[x for x in your_file if not x.isspace()]
your_file.close()

for line in without_blanks:
    print line

答案 1 :(得分:0)

首先,改变序列(从中删除元素),迭代时不是一个好主意。

您看到银行的行实际上并不是空白,它可能包含一些 SPACE TAB (或其他)字符,但(如打印时所见)您的line变量)它将在 Windows 上包含 EOLN 标记:\n(或\r\n)。

因此,您可以在首次打印行后修改代码,执行以下操作:

lines[:] = [item for item in lines if item.strip()]