Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将csv文件中的行提取到csv文件中?_Python_Csv - Fatal编程技术网

Python 如何将csv文件中的行提取到csv文件中?

Python 如何将csv文件中的行提取到csv文件中?,python,csv,Python,Csv,通过参考以下问题:如何在python中从csv文件提取行并将其复制到另一个csv文件?基于此数组执行此代码后得到的结果: frame.number frame.len frame.cap_len frame.Type 1 100 100 ICMP_tt 2 64 64 UDP 3 100

通过参考以下问题:如何在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)

要在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)

你的实际csv是这样的吗?还是用逗号作为分隔符?还是使用电子表格输入值?因为csv不应该看起来像那样,它应该看起来像
frame.number,frame.len,frame.cap_len,frame.Type
,并且用逗号分隔。使用python2?然后以二进制模式打开它。@Abhishtagaya是的,它们是用逗号分隔的,正如你所说的,我把它们像数组一样放置,以便更清楚。@cᴏʟᴅsᴘᴇᴇᴅ 你已经标记了我的问题,但事实并非如此,因为该解决方案没有给我正确的解决方案,我等待我知道你有熊猫的事实,那么为什么不使用它呢?你的实际csv看起来像那样吗?还是用逗号作为分隔符?还是使用电子表格输入值?因为csv不应该看起来像那样,它应该看起来像
frame.number,frame.len,frame.cap_len,frame.Type
,并且用逗号分隔。使用python2?然后以二进制模式打开它。@Abhishtagaya是的,它们是用逗号分隔的,正如你所说的,我把它们像数组一样放置,以便更清楚。@cᴏʟᴅsᴘᴇᴇᴅ 你已经标记了我的问题,但事实并非如此,因为该解决方案没有给我正确的解决方案,我等待我知道你有熊猫的事实,那么为什么不使用它呢?