今回やりたかったこと
- csvを入力し、中の値を処理し、新しく列を追加して出力
- 今回の例では
- 入力csv → 果物の名前と価格
- 出力csv → ↑の価格から税込価格を計算し、新しい列で追記
サンプルコード
- まず今回確認したコードと入出力を記載
- その後各要素について、確認したことをmemoしていきます
入力
fruit, price
apple, 150
banana, 200
orange, 120
コード
import csv
if __name__ == '__main__':
# ファイルopen(読み込み用)
with open('./test_in.csv') as f1:
# ファイルのopen(書き込み用)
with open('./test_out.csv', 'w') as f2:
# 読み込み操作用readerの設定
reader = csv.reader(f1)
# 書き込み操作用writerの設定
writer = csv.writer(f2)
# 一行目のヘッダは処理しないので、区別のための変数
header_flag = 0
# 一行ずつ読み込み→処理→書き込み
for row in reader:
# 1行目(ヘッダー)の時は新しいヘッダーを追記
if(header_flag == 0):
# ヘッダーフラグを1にして2行目行こうはこの処理に飛ばないようにする
header_flag = 1
# ヘッダーを追記
row.append("include tax")
# 書き込み
writer.writerow(row)
continue
# 2行目行こうは税込価格の計算をして追記
# priceを取得して、税率8%を計算
tax = float(row[1]) * 1.08
# 小数点以下を四捨五入して追記
row.append(round(tax))
# 書き込み
writer.writerow(row)
結果確認
確認したことmemo
サンプルコードで書いたコードで確認したことをmemo
impoet
- 今回は標準ライブラリの
csv
を使用 - コードの最初に
import csv
import csv
ファイルオープン
- csvライブラリを使用する場合は
with open
でファイルを開く必要がある with open('【ファイルパス】') as ファイル変数名:
with open
以下をインデントリを下げる- 下げたインデントリ内では開いたファイルを変数名で使用できる
- 例:カレントディレクトリ"./test_in.csv"を変数"f1"で開く時
with open('./test_in.csv') as f1:
読み込みと書き込み
-
読み込み、書き込みについては以下でまとめた
-
今回の例
- 読み込み
reader = csv.reader(f1)
でf1
の読み込み設定for row in reader:
で一行ずつ読んでいく- 書き込み
writer = csv.writer(f2)
で'f2'の書き込み設定writer.writerow(row)
で一行ずつ読んだrowを書き込み
入力の値を処理
csv.reader
で読んだcsvはリスト形式で一行ずつ読める- リストと同じように処理する
- 今回はprice(左から2番目)の値を使用したいので、一行ずつ読んだ
row
に対して
row[1]
でpriceを取得
- 今回はprice(左から2番目)の値を使用したいので、一行ずつ読んだ
- 要素を足す場合は
append
で追加row.append(【追加する値】)
コメント