Python CSV只写特定行

时间:2018-09-19 22:48:02

标签: python pandas csv split itertools

我正在尝试读取一个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中也尝试过,但是发现当您格式化CSV之类的格式异常时,Pandas不能很好地工作这些。

1 个答案:

答案 0 :(得分:0)

仅读取数据行并将其存储到pandas数据框中应与此兼容:

import pandas as pd    

df = pd.read_csv('sample_file.csv', skiprows=5)

其后可以用以下命令写到新的csv文件中:

df.to_csv('output.csv', index=False)