diadia

興味があることをやってみる。自分のメモを残しておきます。

Python:CSVモジュール使い方

関連記事

csvモジュールの使い方

リストデータをファイルとしてアウトプットしたい場合にcsvファイルにするのは便利。 csvモジュールの使い方をメモしておく。
csvモジュールはpythonの標準ライブラリなのでpip install csvのようなことはせずに利用することができる。
https://docs.python.org/ja/3/library/csv.html

import csv
使用例

import csv

test_list = ["ロシア", "アメリカ", "中国", "ブラジル"]
with open("path/test.csv", "a", encoding="utf-8") as f:
    writer = csv.writer(f, lineterminator="\n")
    writer.writerow(test_list)

csv.writer()関数を使うとwriterオブジェクトを返す。このwriterオブジェクトにはcsvファイルに書き込むためのメソッドがある。wirerow()メソッド又はwriterows()メソッドである。これらのメソッドに与えた引数がcsvファイルに書き込まれることになる。

writerオブジェクトを作成する

1行書くか複数行書くかのメソッドがある。そのメソッドを使うためのオブジェクトがwriterオブジェクト。 writerで返されるのがwriterオブジェクトである。

 csv.writer(ファイルオブジェクト) 

1行書く場合

writer で返されたオブジェクトにwriterowメソッドを使う。

 w.writerow(シーケンス)  

複数行書く場合

writer で返されたオブジェクトにwriterowsメソッドを使う。

 w.writerows(シーケンス)  

csvファイルの読み込み

csvファイルの一行目がカラムの説明になる場合がある。読み込みの際にこの一行目を省いて2行目以降のデータのみ読み込む方法を調べた。 https://docs.python.jp/3/library/csv.html#reader-objects http://www.bokupy.com/detail/67

 import csv 
with open("book1.csv", "r") as f:
    reader = csv.reader(f)
    for row in reader:
        if reader.line_num == 1:
            continue print(row) 

重要な点として、reader.line_numを使うことのほか、continueも重要である。continueはfor構文中にcontinueに出くわしたとき、今の現在のループを中断し、次の繰り替し処理を行う動作になる。