Python нумерует пустые строки при копировании

with open('C:\\...\\Demos\\first.txt','r') as firstfile, open('C:\\...\\reports\\second.txt','a') as secondfile:
for idx, line in enumerate(firstfile, start=1):
    secondfile.write('{} {}'. format(idx, line))

Как можно обойти нумерацию, кроме проверки циклом?


Ответы (2 шт):

Автор решения: Sergey K.

Как вариант - не использовать функцию enumerate, а инкриментировать вручную, проверяя каждую строчку.

with open('C:\\...\\Demos\\first.txt','r') as firstfile, open('C:\\...\\reports\\second.txt','a') as secondfile:
idx = 1
for line in firstfile:
    if line:
        secondfile.write('{} {}'. format(idx, line))
        idx += 1
→ Ссылка
Автор решения: kioley

Можно использовать функцию filter для firstfile:

with open('C:\\...\\Demos\\first.txt','r') as firstfile, open('C:\\...\\reports\\second.txt','a') as secondfile:
    for idx, line in enumerate(filter(lambda s: s != '\n' , firstfile), start=1):
        secondfile.write('{} {}'. format(idx, line))
→ Ссылка