如何从csv文件中提取和复制行到python中的另一个csv文件?

问题描述:

让我们假设我有一个CSV文件中的大数据:这是一组从我的文件中的行:如何从csv文件中提取和复制行到python中的另一个csv文件?

frame.number frame.len frame.cap_len frame.Type 
    1    100   100   ICMP_tt 
    2    64   64   UDP 
    3    100   100   ICMP_tt 
    4    87   64   ICMP_nn 

我想从这个文件中提取30%,并把它放在另一个csv文件。

我尝试通过使用此代码,但它给了我选择每行,每行不:

import csv 

data = [] #Buffer list 
with open("E:\\Test.csv", "rb") as the_file: 
    reader = csv.reader(the_file, delimiter=",") 
    for line in reader: 

     try: 
      new_line = [line[0], line[1]] 
      #Basically ´write the rows to a list 
      data.append(new_line) 
     except IndexError as e: 
      print e 
      pass 

    with open("E:\\NewTest.csv", "w+") as to_file: 
     writer = csv.writer(to_file, delimiter=",") 
     for new_line in data: 
      writer.writerow(new_line) 

我尝试

的Python csv模块使用,默认情况下,所以它不需要指定分隔符,除非你有一个不同的分隔符。我想你有以下csv文件:

frame.number,frame.len,frame.cap_len,frame.Type 
1,100,100,ICMP_tt 
2,64,64,UDP 
3,100,100,ICMP_tt 
4,87,64,ICMP_nn 

该文件中的每一行代表一行。

# read 
data = [] 
with open('test.csv', 'r') as f: 
    f_csv = csv.reader(f) 
    # header = next(f_csv) 
    for row in f_csv: 
     data.append(row) 


# write 
with open('newtest.csv', 'w+') as f: 
    writer = csv.writer(f) 
    for i in range(int(len(data) * 30/100)): 
     writer.writerow(data[i]) 
+0

谢谢你的回答,但我需要从我的文件中只复制30% – tierrytestu

+0

当你得到30%的文件时,你可以停止循环。 'len(data)* 30/100)'会给你30%的行号。 – metmirr