Я пытаюсь прочитать CSV-файл, который содержит несколько строк бесполезных данных в начале, и извлечь только те строки, которые содержат соответствующие данные.Я пробовал десятки вариантов моего кода и пытался реализовать его с помощью таких библиотек, как Pandas, но безуспешно.Пример CSV выглядит следующим образом: первые 5 строк содержат данные, которые мне не нужны.Единственными строками, которые я хочу записать в новый файл, являются строки после «SOLUTION».
MWU Checker - 09/12/2018
Server v7.4,Admin,Product
RECOMMEND
Update,Issue Statement,Bypass,Resolution
SOLUTION
IP Address,DNS Name,OS,Status
10.0.0.1,win08a,Windows Server 2008 R2,Up to date
10.0.0.2,win08b,Windows Server 2008 R2,Up to date
10.0.0.3,win08c,Windows Server 2008 R2,Out of date
10.0.0.4,win08d,Windows Server 2008 R2,Up to date
10.0.0.5,win08e,Windows Server 2008 R2,Up to date
Учитывая, что «SOLUTION» всегда будет в строке 5, я попытался записать в CSV сследующий код:
import csv
from itertools import islice
def checker():
with open('sample_file.csv', 'r') as csv_in, open('output.csv', 'w', newline='') as csv_out:
data = csv.reader(islice(csv_in, 5, None), delimiter=',')
writer = csv.writer(csv_out)
for row in data:
print (row)
writer.writerow(row)
То, что так расстраивает, это то, что консоль распечатает правильные данные, показывая только строки 6 или больше, но программа записи никогда не обновляет файл «output.csv», она просто пишетте же данные, что и в исходном файле «sample_file.csv».
Я уверен, что есть простое решение, но я пробовал бесчисленное множество вариантов своего кода и пытался использовать его также в Pandas, но обнаружил, что Pandas работает не так хорошо, если вы странно отформатировали CSV, такие как эти.