Python CSV を扱う #3

株式会社リュディアです。今回は CSV ファイルの読み込みの際の型変換についてまとめてみます。

前回までの Python で CSV を扱うことについてのまとめへのリンクは以下を参考にしてください。

CSV のフォーマット自体に関するまとめは以下のリンクを参照してください。

Python の標準ライブラリでファイルから CSV を読み込んだ場合は文字列として読み込まれることに注意してください。つまり型としては str になります。今回は新しい CSV ファイルを用意しました。以下のようなファイルでファイル名は note_read_number_sample.csv です。

画像1

では、このファイルを読み込んでみましょう。以下のコードを見てください。

import csv

try:
   with open('note_read_number_sample.csv', 'r', encoding = 'utf_8-sig') as f:
       reader = csv.reader(f)
       l = [row for row in reader]
   print(l)
except FileNotFoundError as e:
   print('File not found', e)

# [['0.81', '0.82', '0.83', '0.84', '0.85', '0.86', '0.87'], ['1', '2', '3', '4', '5', '6', '7'], ['1.5', '1.7', '1.9', '2.1', '2.3', '2.5', '2.7'], ['100.005', '110.015', '111.125', '200.005', '210.015', '211.025', '500.005'], ['1000', '1001', '1010', '1011', '1100', '1101', '1110']]

浮動小数点数も整数もシングルクォートで挟まれて文字列として読み込まれていることがわかりますね。しかし数字は数字として読み込みたいときが多いと思いますので次の例を見てください。

import csv

try:
   with open('note_read_number_sample.csv', 'r', encoding = 'utf_8-sig') as f:
       reader = csv.reader(f, quoting = csv.QUOTE_NONNUMERIC)
       l = [row for row in reader]
   print(l)
except FileNotFoundError as e:
   print('File not found', e)

# [[0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87], [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0], [1.5, 1.7, 1.9, 2.1, 2.3, 2.5, 2.7], [100.005, 110.015, 111.125, 200.005, 210.015, 211.025, 500.005], [1000.0, 1001.0, 1010.0, 1011.0, 1100.0, 1101.0, 1110.0]]

csv.reader(f) に追加の引数 quoting = csv.QUOTE_NONNUMERIC を追加することで要素を浮動小数点数に変換して取得できます。ただし数以外の要素があると浮動小数点数に変換できないのでエラーが発生することに注意が必要です。

Python CSVを扱うに関するまとめの続きは以下からどうぞ。

では、ごきげんよう。

この記事が気に入ったらサポートをしてみませんか?