我有一个文本文件(称为霍比特人)。 我需要使用命令rstrip()从该文档中删除换行符。 我这样做是为了删除换行符。
clear_lines = []
for line in hobbit:
clear_lines = line.rstrip('\n')
(我不确定这一步是否正确,有没有办法验证它?)
现在我需要在列表中保存非空行。 我该怎么做?
答案 0 :(得分:0)
在循环中,您需要将行追加到列表中。分配操作在那里没有意义。
clear_lines.append(line.rstrip('\n'))
如果您想省略非空行,请在追加之前检查该条件:
line = line.rstrip('\n')
if (len(line) != 0):
...
你的程序中的“空行”是什么?你认为只有空格的行是空的吗?如果是,则在检查长度之前删除所有“空白”字符。
答案 1 :(得分:0)
您可以为此
使用列表推导clear_lines = [line.rstrip('\n') for line in hobbit]
要验证这是否有效,您可以查看并检查是否有任何行以'\n'
any(line.endswith('\n') for line in clear_lines)
应该返回false
。如果你愿意,可以assert这个。
添加检查,例如查看行是否为空,可以添加到上面的列表推导中。
举个例子:
hobbit = ['hello','world','there\n','\n']
clear_lines = [line.rstrip('\n') for line in hobbit if len(line.rstrip('\n')) > 0]
clear_lines包含值:
['hello', 'world', 'there']
在你的情况下,假设文件被称为hobbit.txt
并保存在与python文件相同的目录中,那么:
with open('hobbit.txt','rb') as hobbit:
clear_lines = [line.rstrip('\n') for line in hobbit if len(line.rstrip('\n')) > 0]
assert(not any(line.endswith('\n') for line in clear_lines))
断言再次完全是可选的,主要用于调试目的。