プログラミング勉強の備忘録

主にpythonやスマホアプリを作るためのプログラミングで勉強した内容を忘れないように記載していきます。

【Python】CSVファイルの書き込み

【はじめに】

今回はPythonCSVファイルに書き込みする方法についてのメモです。

<実施環境>

【コードと説明】

今回はライブラリの「csv」を使用しますので、インポートします。

import csv

ライブラリの「csv」はPythonに標準で入っているため、インストールの必要はありません。

<書き込み>

コード 説明
csv.writer(ファイル, delimiter=区切り文字) 書き込みファイルの指定
.writerow(リスト) リストを書き込み
.writerows(2次元リスト) 2次元リストの書き込み
<リストの書き込み>
# csv.writer(ファイル, delimiter=区切り文字)
# .writerow(リスト)
import csv
file_path = './test.csv'

test = ['a', 'b', 'c', 13, 14]

with open(file_path, mode='w') as f:
    writer = csv.writer(f, delimiter=',')
    writer.writerow(test)

最初にライブラリの「csv」をインポートしています。
「open」を使ってファイルを書き込みモードで開きます。
「writer」に「csv.writer」クラスを入れています。
引数にはファイルオブジェクト(今回だとファイルを「f」として開いているので「f」)と区切り文字として「delimiter=」で「,」を指定しています。
「.writerow」はリストを書き込むことができます。
作成されたファイルは下記になります。

# test.csv
a,b,c,13,14
<2次元リストの書き込み>
# .writerows(2次元リスト)
import csv
file_path = './test.csv'

test = [['a', 'b', 'c', 13, 14], ['d', 'e', 'f', 23, 24]]

with open(file_path, mode='w') as f:
    writer = csv.writer(f, delimiter=',')
    writer.writerows(test)

「.writerow」は2次元リストの内部リストを1行として書き込みます。
書き込んだ結果が下記です。

# test.csv
a,b,c,13,14

d,e,f,23,24

1行毎に書き込んでいるはずなのに間に空行ができてしまいました。
これは「open」の引数に「newline=""」を指定することで解決できました。
解決方法はこちらを参考にさせて頂きました。

import csv
file_path = './test.csv'

test = [['a', 'b', 'c', 13, 14], ['d', 'e', 'f', 23, 24]]

with open(file_path, mode='w', newline="") as f:
    writer = csv.writer(f, delimiter=',')
    writer.writerows(test)
# test.csv
a,b,c,13,14
d,e,f,23,24

【後書き】

今回は csv ファイルの書き込み方法についてメモしました。
途中空行ができてしまい思ったよりも時間がかかってしまいました。
次回は csv ファイルの読み込み方法について記載したいと思います。

【参考サイト】

今回の作業にあたり、下記サイトを参考にさせて頂きました。
note.nkmk.me
qiita.com