Python 如何将csv文件中的行提取到csv文件中?
通过参考以下问题:如何在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
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ᴘᴇᴇᴅ 你已经标记了我的问题,但事实并非如此,因为该解决方案没有给我正确的解决方案,我等待我知道你有熊猫的事实,那么为什么不使用它呢?