我有一个文本文档(称为 hobbit)。我需要使用命令 rstrip() 从该文档中删除换行符。我这样做是为了删除换行符。
clear_lines = []
for line in hobbit:
clear_lines = line.rstrip('\n')
(不知道这一步是否正确,有办法验证吗?)
现在我需要将非空行保存在列表中。我怎么做?
我有一个文本文档(称为 hobbit)。我需要使用命令 rstrip() 从该文档中删除换行符。我这样做是为了删除换行符。
clear_lines = []
for line in hobbit:
clear_lines = line.rstrip('\n')
(不知道这一步是否正确,有办法验证吗?)
现在我需要将非空行保存在列表中。我怎么做?
您可以为此使用列表推导
clear_lines = [line.rstrip('\n') for line in hobbit]
要验证这是否有效,您可以查看并检查是否有任何行以'\n'
any(line.endswith('\n') for line in clear_lines)
应该返回false
。如果你愿意,你可以断言这一点。附加检查,例如查看行是否为空,可以添加到上面的列表推导中。
举个例子:
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))
同样,断言是完全可选的,主要用于调试目的。
在您的循环中,您需要将您的行附加到列表中。赋值操作在那里没有意义。
clear_lines.append(line.rstrip('\n'))
如果您想省略非空行,请在添加之前检查该条件:
line = line.rstrip('\n')
if (len(line) != 0):
...
还有什么是你程序中的“空行”?你认为只有空格的行是空行吗?如果是这样,则在检查长度之前去除所有“空白”字符。