公開日:
PythonでCSVファイルを読み込んで各要素を読み取る
2024年12月
PythonでCSVファイルを読み込んで、各行の各要素を読み取ることを考えます。
• やりたいこと
以下のようなCSVデータがあるとします。
[sample_csv.csv]
0000,あいうえお,AAAA
1111,かきくけこ,BBBB
2222,さしすせそ,CCCC
1111,かきくけこ,BBBB
2222,さしすせそ,CCCC
このCSVファイルを読み込んで、改行コードで分割し、分割した各行をリストに格納します。(この例では行数は3なので、リストの要素数は3となります。)
• CSV用モジュールは使わない
「import csv」と記述してCSVモジュールを使用を使用する方法もあるようですが、この記事ではその方法は使用せず、「split」を利用して改行コードで分割する方法を使用します。
• サンプルコード
基本処理
ファイル(sample_csv.csv)からテキストデータを読み込んで、改行コードで分割し、リストに格納するサンプルコードを以下に示します。
FILE_PATH = './sample_csv.csv'
def readText():
f = open(FILE_PATH, 'r', encoding='UTF-8')
data = f.read()
f.close()
return data.strip()
class csvData:
lines = []
def __init__(self):
 text = readText()
 self.lines = text.split('\n')
 print(type(self.lines))
 print(self.lines)
obj = csvData()
def readText():
f = open(FILE_PATH, 'r', encoding='UTF-8')
data = f.read()
f.close()
return data.strip()
class csvData:
lines = []
def __init__(self):
 text = readText()
 self.lines = text.split('\n')
 print(type(self.lines))
 print(self.lines)
obj = csvData()
このコードを実行すると、以下のように表示されます。
リストの各要素を個別に取得するには、「split」を使ってカンマ (,) で分割するといいでしょう。
応用
読み込んだCSVデータが仕様通りかどうか確認する為の処理を追加したサンプルコードを以下に示します。
import sys
FILE_PATH = './sample_csv.csv'
def readText():
f = open(FILE_PATH, 'r', encoding='UTF-8')
data = f.read()
f.close()
return data.strip()
class csvData:
lines = []
def __init__(self):
 text = readText()
 self.lines = text.split('\n')
 #print(type(self.lines))
 #print(self.lines)
 self.__checkLines()
def __checkLines(self):
 c = 0
 for x in self.lines:
c = c + 1
if x.count(',') != 2:
print(f'","の数が不正です。{c}')
sys.exit()
obj = csvData()
FILE_PATH = './sample_csv.csv'
def readText():
f = open(FILE_PATH, 'r', encoding='UTF-8')
data = f.read()
f.close()
return data.strip()
class csvData:
lines = []
def __init__(self):
 text = readText()
 self.lines = text.split('\n')
 #print(type(self.lines))
 #print(self.lines)
 self.__checkLines()
def __checkLines(self):
 c = 0
 for x in self.lines:
c = c + 1
if x.count(',') != 2:
print(f'","の数が不正です。{c}')
sys.exit()
obj = csvData()
このコードは、リストの要素を1つずつ見ていって、カンマの数が2以外の場合にエラーメッセージを表示して処理を終了します。たとえば、以下のデータを読み込ませたとします。
0000,あいうえお,AAAA
1111,かきくけこ,BBBB
2222,さしすせそ,CCCC,
1111,かきくけこ,BBBB
2222,さしすせそ,CCCC,
これは、3行目の末尾に余分なカンマが付いています。このようなデータのとき、コードを実行すると、以下のように表示されます。
このエラーメッセージは、データの3行目が不正であることを示しています。
• まとめ
PythonでCSVファイルを読み込んでデータを処理するための、簡単なコードをご紹介しました。CSVファイルを読み込むだけなら、CSV用のモジュールをインポートしなくても、ある程度は対応できそうです。