This seems like a straight-forward question but I can't seem to pinpoint my problem. I am trying to delete all lines in a file that start with an octothorpe (#) except the first line. Here is the loop I am working with:
for i, line in enumerate(input_file):
if i > 1:
if not line.startswith('#'):
output.write(line)
The above code doesn't seem to work. Does anyone known what my problem is? Thanks!
I wouldn't bother with enumerate here. You only need it decide which line is the first line and which isn't. This should be easy enough to deal with by simply writing the first line out and then using a for loop to conditionally write additional lines that do not start with a '#'.
Thanks to twopoint718 for pointing out the advantage of using lstrip.
Maybe you want to omit lines from the output where the first non-whitespace character is an octothorpe:
(note the call to
lstrip
)You aren't writing out the first line:
Keep in mind also that
enumerate
(like most things) starts at zero.A little more concisely (and not repeating the output line):