Я пытаюсь прочитать 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
Учитывая, что "РЕШЕНИЕ" всегда будет в строке 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, такие как эти.
Чтение только строк данных и сохранение в рамке данных pandas должно работать с этим:
import pandas as pd
df = pd.read_csv('sample_file.csv', skiprows=5)
за которым последует запись в новый файл csv с:
df.to_csv('output.csv', index=False)
output.csv
содержит только строки, напечатанные на стандартный вывод. Вы уверены, что не работаете надoutput.csv
в какой-то другой части вашей программы?