Использовать Python для удаления строк в файлах, начинающихся с октофорпа?
Это кажется простым вопросом, но я не могу точно определить мою проблему. Я пытаюсь удалить все строки в файле, начинающиеся с октофорпа (#), кроме первой строки. Вот цикл, с которым я работаю:
for i, line in enumerate(input_file):
if i > 1:
if not line.startswith('#'):
output.write(line)
Код выше, похоже, не работает. Кто-нибудь знает, в чем моя проблема? Спасибо!
3 ответа
Вы не пишете первую строку:
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)
Я бы не стал перечислять здесь. Вам нужно только решить, какая строка является первой строкой, а какая нет. Это должно быть достаточно просто, чтобы просто написать первую строку, а затем использовать цикл 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.
Может быть, вы хотите пропустить строки из выходных данных, где первый непробельный символ - это окто-тип:
for i, line in enumerate(input_file):
if i == 0 or not line.lstrip().startswith('#'):
output.write(line)
(обратите внимание на призыв к lstrip
)