2016-12-04 2 views
0

Я пытаюсь удалить все строки в файле, который начинается с цифр. Я придумал этот блок кода ниже, но он не работает.Удалить все строки, начинающиеся с числа, используя python

output = open("/home/test1/Desktop/diff2.txt", "w") 

with open("/home/test1/Desktop/diff.txt") as input: 
    for line in input: 
    if not line.lstrip().isdigit(): 
     output.write(line) 
     print(line) 

    input.close() 
    output.close() 
    exit(); 

Он по-прежнему заканчивается печать все строки, начинающиеся с цифр в выходном файле

+0

Можете ли вы привести пример файла? – JosephGarrone

+0

У вас есть ошибка с отступом в фрагменте, который вы разместили для содержимого цикла 'for'. – theorifice

+0

Да, я отредактирую вопрос с ним – answerSeeker

ответ

0

Этот следующий сценарий отлично на мой быстрый тест работает

1test 
2test 
hello 
3test 
world 
4something 

дает выход:

hello 
world 
+1

Спасибо, это решает мою проблему. – answerSeeker

0

Вы зовущих is_digit на всей линии, которая будет возвращать True только если строка состоит только из цифр.

with open('input.txt') as inp, open('output.txt', 'w') as out: 
    out.write(''.join(l for l in inp if l[0] not in '123456789')) 
0

lstrip().isdigit() не проверяет первый символ в вашей строке является цифрой. Вы должны принять первый символ (если строка имеет символы) и проверить isdigit() на этом полукокса:

output = open("test.out", "w") 

with open("test.in") as input: 
    for line in input: 
     if not line.lstrip()[0].isdigit(): 
      output.write(line) 
      print(line) 

output.close() 

Со входом::

if line == '' or not line[0].isdigit(): 
    output.write(line) 
Смежные вопросы