繁体   English   中英

如何从csv文件中提取行到另一个csv文件中?

[英]How to extract lines from csv file to anothe csv file?

通过参考此问题:如何在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
  5               100           100           ICMP_tt   
  6                87            64           ICMP_nn
  7               100           100           ICMP_tt   
  8                87            64           ICMP_nn
  9                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])

这是newtest.csv文件中的结果:

 frame.number    frame.len   frame.cap_len   frame.Type 
     empty line....
      1               100           100           ICMP_tt 
   empty line....
      2                64            64           UDP 

但是,我希望结果看起来像这样:

 frame.number    frame.len   frame.cap_len   frame.Type 
    1               100           100           ICMP_tt 
    2                64            64           UDP 

test.csv文件仍然相同,我的意思是复制的两行没有删除。 这意味着我要拥有:

  frame.number    frame.len   frame.cap_len   frame.Type  
      3               100           100           ICMP_tt   
      4                87            64           ICMP_nn
      5               100           100           ICMP_tt   
      6                87            64           ICMP_nn
      7               100           100           ICMP_tt   
      8                87            64           ICMP_nn
      9                87            64           ICMP_nn

我希望你能帮助我。

要在Python 2.x中单独进行读写,可以使用以下方法:

import csv

with open('test.csv', 'rb') as f_input:
    data = list(csv.reader(f_input))

with open('newtest.csv', 'wb') as f_output:
    csv_output = csv.writer(f_output)
    csv_output.writerows(data)

这意味着data将所有行都保存为列表列表。 确保以二进制模式打开文件以进行读取和写入。 如果不这样做,您将得到空行。

要一次执行这一行(如果CSV文件太大而无法存储,则很有用),您可以执行以下操作:

with open('test.csv', 'rb') as f_input, open('newtest.csv', 'wb') as f_output:
    csv_input = csv.reader(f_input)
    csv_output = csv.writer(f_output)    

    for row in csv_input:
        csv_output.writerow(row)

甚至:

with open('test.csv', 'rb') as f_input, open('newtest.csv', 'wb') as f_output:
    csv_input = csv.reader(f_input)
    csv_output = csv.writer(f_output)    
    csv_output.writerows(csv_input)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM