Search code examples
pythonstartswith

Use Python to remove lines in a files that start with an octothorpe?


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!


Solution

  • You aren't writing out the first line:

    for i, line in enumerate(input_file):
        if i == 0:
            output.write(line)
        else:
            if not line.startswith('#'):
                output.write(line)
    

    Keep in mind also that enumerate (like most things) starts at zero.

    A little more concisely (and not repeating the output line):

    for i, line in enumerate(input_file):
        if i == 0 or not line.startswith('#'):
            output.write(line)