用Python删除以井号开头的文件行?
这个问题看起来很简单,但我就是找不到我的问题所在。我想要删除文件中所有以井号(#)开头的行,除了第一行。这里是我正在使用的循环代码:
for i, line in enumerate(input_file):
if i > 1:
if not line.startswith('#'):
output.write(line)
上面的代码似乎不太管用。有没有人知道我的问题出在哪里?谢谢!
3 个回答
4
也许你想在输出中省略那些第一 个非空白字符是井号(#)的行:
for i, line in enumerate(input_file):
if i == 0 or not line.lstrip().startswith('#'):
output.write(line)
(注意这里调用了 lstrip
函数)
10
在这里,我觉得用enumerate没必要。你只需要判断哪一行是第一行,哪一行不是。其实这很简单,你可以先把第一行写出来,然后用一个循环来判断其他行,如果那行不是以'#'开头,就把它写出来。
def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
感谢twopoint718提到使用lstrip的好处。
19
你没有写出第一行:
for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
还要记住,enumerate
(就像很多东西一样)是从零开始的。
再简单一点(而且不重复输出的那一行):
for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)