PythonでCSVを読み、ソートし、出力する
はじめに
すること
このようなCSVファイルがあったとします。
id,subject,score 01,国語,60 02,国語,100 03,国語,55 04,国語,90 05,国語,65 06,国語,80
これを読み込み、得点が高い順に並び変えます。
そして以下のように出力したいと思います。
id,subject,score 02,国語,100 04,国語,90 06,国語,80 05,国語,65 01,国語,60 03,国語,55
実装
import csv import sys # CSV内のデータをリストlに読み込み filename = 'test.csv' with open(filename, encoding='utf8', newline='') as f: reader = csv.reader(f) l = [row for row in reader] # リストlの1行目から最終行までを対象とし(スライス)、得点順にソートした新たなリストsortを生成 sort = sorted(l[1:], reverse=True, key=lambda x:int(x[2])) # 出力 writer = csv.writer(sys.stdout) # CSVファイルの内容を標準出力に出力 writer.writerow(l[0]) writer.writerows(sort)
おわりに
意外と機会がなくCSVちゃん、初めましての回でした。
仲良くなれたかも。