3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonその2Advent Calendar 2019

Day 10

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

Posted at

はじめに

今まで業務で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で出来ることは他にも山ほどあるので、これを機に色々試してみたいなと思いました。

3
5
0

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
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?