LoginSignup
5

More than 3 years have passed since last update.

posted at

PythonでCSVファイル触ってみた

はじめに

今まで業務でPythonを扱ったことは無かったのですが、Pythonを使うことで色々と業務を効率化できると聞いたので、とても簡単ではありますが試しにどんなもんか触ってみました。
今回は特に実業務でもよく扱うCSVファイルの操作に絞って試してみました。
(異常系の考慮等は省いています)

今回用いたCSVファイルはこちら。

Apple,100,1
Orange,120,4
Banana,80,2
Apple,100,2

左から、商品、金額、個数の順となっています。

CSVファイルの読み込み

それでは早速CSVファイルを読み込んでみます。

import csv

with open('purchase.csv') as f:
    print(f.read())

# Apple,100,1
# Orange,120,4
# Banana,80,2
# Apple,100,2

たった2行で書けました。
結果はファイルの中身がそのまま出力されています。

CSVモジュール

csvモジュールはPythonの標準ライブラリに含まれているため、インポートを追加すれば使えるようになります。

with構文

with構文はファイル操作に便利です。close処理が省略できます。

forループさせてみる

とりあえず回してみる。

import csv

with open('purchase.csv') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

# ['Apple', '100', '1']
# ['Orange', '120', '4']
# ['Banana', '80', '2']
# ['Apple', '100', '2']

行ごとの要素がリストとして出力されました。

csv.reader

CSVを読み込む際はreaderを使う。readerを回すことでリストが取得できる。

要素の中身を取り出してみる

要素を取り出す場合はrowのindexを指定してやれば良さそう。

import csv

with open('purchase.csv') as f:
    reader = csv.reader(f)
    for row in reader:
        print('商品:' + row[0] + ' ' + '値段:' + row[1] + ' ' + '個数:' + row[2])

# 商品:Apple 値段:100 個数:1
# 商品:Orange 値段:120 個数:4
# 商品:Banana 値段:80 個数:2
# 商品:Apple 値段:100 個数:2

各要素毎の出力できました。

合計金額を計算してみる

forループの中で金額の計算を行い、最後に合計金額を出力するように変えてみました。

import csv

with open('purchase.csv') as f:
    reader = csv.reader(f)
    amount = 0
    for row in reader:
        amount += int(row[1]) * int(row[2])
        print(amount)
print(amount)

# 100
# 580
# 740
# 940
# 合計金額:940円

ちゃんと合計金額が出力されました。

※ 最初のprint(amount)は動作確認用です。

CSVファイルへの書き込み

今度は逆にCSVファイルに対して書き込みを行なってみたいと思います。

import csv

with open('purchase.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['Grape',150,1])

# Grape,150,1

無事書き込めました・・・って全部消えてしまってる!?
既存ファイルに追記する場合は引数にwではなくaを指定するようです。

import csv

with open('purchase.csv', 'a', newline='') as f: #追加
    writer = csv.writer(f)
    writer.writerow(['Grape',150,1])

# Apple,100,1
# Orange,120,4
# Banana,80,2
# Apple,100,2
# Grape,150,1

これで追加することが出来ました。

csv.writer

csvに書き込む際はwriterを使う。書き込みには上書きと追加がある。

newline

改行コードが\r\nである環境ではopen()の引数newline''として明記しておいた方が安全らしい。

最後に

今回は簡単ではありますが、CSVファイルの基本的な読み書きについて触れてみました。Pythonで出来ることは他にも山ほどあるので、これを機に色々試してみたいなと思いました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5