我正在尝试使用类似于以下代码的列表理解来拆分文件:
lines = [x for x in re.split(r"\n+", file.read()) if not re.match(r"com", x)]
但是,lines 列表的最后一个元素总是一个空字符串。有谁知道避免这种情况的方法(不包括在之后放置 pop() 的错误)?
请您参考如下方法:
收起正则表达式锤子:-)
- 您可以直接遍历文件;
readlines()现在几乎已经过时了。 - 了解
str.strip()(及其 friendlstrip()和rstrip())。 - 不要使用
file作为变量名。这是一种错误的形式,因为file是一个 built-in function .
您可以将代码编写为:
lines = []
f = open(filename)
for line in f:
if not line.startswith('com'):
lines.append(line.strip())
如果你仍然在那里得到空行,你可以添加一个测试:
lines = []
f = open(filename)
for line in f:
if line.strip() and not line.startswith('com'):
lines.append(line.strip())
如果你真的想要一行:
lines = [line.strip() for line in open(filename) if line.strip() and not line.startswith('com')]
最后,如果您使用的是 python 2.6,请查看 with statement进一步改进。
