这似乎是一个直截了当的问题,但我似乎无法确定我的问题。我试图删除文件中除第一行以外的octothorpe(#)开头的所有行。这是我正在使用的循环:
for i, line in enumerate(input_file):
if i > 1:
if not line.startswith('#'):
output.write(line)
以上代码似乎不起作用。有谁知道我的问题是什么?谢谢!
答案 0 :(得分:18)
你没有写出第一行:
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)
答案 1 :(得分:6)
我不打扰这里列举。你只需要它决定哪一行是第一行,哪一行不是。这应该很容易通过简单地写出第一行然后使用for循环有条件地写出不以'#'开头的其他行来处理。
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的优势。
答案 2 :(得分:3)
也许你想省略输出中第一个非空白字符是octothorpe的行:
for i, line in enumerate(input_file):
if i == 0 or not line.lstrip().startswith('#'):
output.write(line)
(请注意对lstrip
的调用)