我正在尝试从文本文件中删除空白行。以下是我对它的看法
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']
答案 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()]