2015-09-03 102 views
1

标准我要寻找一些指针做以下阅读CSV和写在蟒蛇

从排序的CSV读取数据,并创建一个基于标准不同的CSV文件,基于了新的CSV文件。我的输入文件看起来像下面

Ip  Subnet   location 
1.0.1.2 255.255.255.0 Argentina 
1.0.1.3 255.255.255.0 Argentina 
1.3.4.5 255.255.255.0 Belgium 
1.2.4.5 255.255.255.0 Belgium 
3.4.5.6 255.255.255.0 California 
1.2.7.8 255.255.255.0 California 

我想什么是我应该得到一个CSV文件每个位置(3个文件按照上面的输入文件) 当读取输入file..the时刻找到一个不同的位置就应该开始创建新的文件,并写入数据...,并再次找到一个不同的位置,它应该切换到一个新的文件

在上面实现任何帮助将是非常有益的......或有任何其他这样做的方式?

+1

你千方百计地去解决这个问题?如果是,那么请显示你的代码。 –

+1

我投票关闭这一问题作为题外话,因为SO不是代码编写的服务,请您出示的编码工作 – EdChum

回答

0

以下脚本应该可以工作。它将根据当前国家/地区创建一个CSV文件名。它假定你输入的日志文件是标准CSV格式:

import csv 

with open('log.csv') as f_input: 
    csv_input = csv.reader(f_input) 
    headings = next(csv_input) 

    country = '' 
    f_output = None 

    for cols in csv_input: 
     if country != cols[2]: 
      country = cols[2] 

      if f_output: 
       f_output.close() 

      f_output = open(country + ".csv", "wb") 
      csv_output = csv.writer(f_output) 
      csv_output.writerow(headings) 

     csv_output.writerow(cols) 

    f_output.close() 

因此,举例来说,你会得到一个名为Argentina.csv具有以下内容:

Ip,Subnet,location 
1.0.1.2,255.255.255.0,Argentina 
1.0.1.3,255.255.255.0,Argentina 
+0

非常感谢马丁.....它的工作就像我已经改变了被移除的魅力 唯一“标题=下一个(csv_input)” 和指定行在地方“csv_output.writerow(行)”的...然后在所有的文件得到了标题......前,我得到了第2行中的所有文件德标题。 – Rakesh