亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 CSV 文件拆分為多個(大小不同)文件,保留標題

將 CSV 文件拆分為多個(大小不同)文件,保留標題

慕容708150 2022-03-09 21:12:25
我有一個帶有以下標題列的大型 csv (test.csv)id; type; name和以下值:1; A; ASW232; C; SDF923; D; SDI224; D; ASD005; C; WPE036; D; PPO307; A; WER348; C; FHH889; C; FGE4510; A; DFQ1211; G; WWQ8912; C; YDT6313; D; QTT21該文件沒有排序,我希望每次找到類型 A 時都拆分一個 CSV 文件,并保持相同的標題。例如:test_1.csvid; type; name1; A; ASW232; C; SDF923; D; SDI224; D; ASD005; C; WPE036; D; PPO30test_2.csvid; type; name7; A; WER348; C; FHH889; C; FGE45test_3.csvid; type; name10; A; DFQ1211; G; WWQ8912; C; YDT6313; D; QTT21我正在努力為此制作一個python腳本,但我失敗了。
查看完整描述

1 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

您可以使用itertools.groupby:


import itertools, csv

data = list(csv.reader(open('test.csv'), delimiter=';'))[1:]

new_d = [[a, list(b)] for a, b in itertools.groupby(data, key=lambda x:x[1]==' A')]

new_groups = [new_d[i][-1]+new_d[i+1][-1] for i in range(0, len(new_d), 2)]

for i, a in enumerate(new_groups, 1):

  with open('test_{}.csv'.format(i), 'w') as f:

    write = csv.writer(f, delimiter=';')

    write.writerows([['id', 'type', 'name']]+a)

test_1.csv:


id;type;name

1; A; ASW23

2; C; SDF92

3; D; SDI22

4; D; ASD00

5; C; WPE03

6; D; PPO30

test_2.csv:


id;type;name

7; A; WER34

8; C; FHH88

9; C; FGE45

test_3.csv:


id;type;name

10; A; DFQ12

11; G; WWQ89

12; C; YDT63

13; D; QTT21


查看完整回答
反對 回復 2022-03-09
  • 1 回答
  • 0 關注
  • 238 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號