我build议你在看到一个#字符时不要忽略整个行; 只是忽略其余的行。 你可以用一个称为partition的string方法函数轻松地做到这一点
with open("filename") as f: for line in f: line = line.partition('#')[0] line = line.rstrip() # ... do something with line ...
partition返回一个元组:分区string之前的所有内容,分区string以及分区string之后的所有内容。 因此,通过索引[0]我们只取出分区string之前的部分。
编辑:如果您正在使用没有partition()的Python版本,这里是您可以使用的代码:
with open("filename") as f: for line in f: line = line.split('#', 1)[0] line = line.rstrip() # ... do something with line ...
这将string分割成“#”字符,然后在分割之前保留所有内容。 1参数使.split()方法在一次分割后停止; 因为我们只是抓住第0个子string(通过索引[0] ),你会得到同样的答案没有1参数,但这可能会更快一点。 (从我的原始代码简化感谢来自@gnr的评论。我原来的代码是没有理由的messier;谢谢,@gnr。)
你也可以写你自己的partition()版本partition() 。 这里有一个叫做part() :
def part(s, s_part): i0 = s.find(s_part) i1 = i0 + len(s_part) return (s[: