0

我有一个文本文档(称为 hobbit)。我需要使用命令 rstrip() 从该文档中删除换行符。我这样做是为了删除换行符。

clear_lines = []

for line in hobbit:
    clear_lines = line.rstrip('\n')

(不知道这一步是否正确,有办法验证吗?)

现在我需要将非空行保存在列表中。我怎么做?

4

2 回答 2

0

您可以为此使用列表推导

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))

同样,断言是完全可选的,主要用于调试目的。

于 2013-10-27T23:24:08.127 回答
0

在您的循环中,您需要将您的行附加到列表中。赋值操作在那里没有意义。

clear_lines.append(line.rstrip('\n'))

如果您想省略非空行,请在添加之前检查该条件:

line = line.rstrip('\n')
if (len(line) != 0):
   ...

还有什么是你程序中的“空行”?你认为只有空格的行是空行吗?如果是这样,则在检查长度之前去除所有“空白”字符。

于 2013-10-27T23:04:44.763 回答