スポンサーリンク

pythonでcsvファイルをテーブル指向で読み込む

テーブル形式のデータを作ったcsvファイルを、きれいに読み込んでいきます。

読み込むcsvは以下の通り。実行するpyファイルと同じディレクトリに置きます。

id,name,password
1,tanaka,hogehoge
2,sugino,sugisugi
3,haruka,hogahoga

まずは、ファイルを読み込みカラム名をリストで取得してみます。

csv_file = open('sample.csv', 'r')

column_list = csv_file.readline().split(',')

print(column_list) # =>['id', 'name', 'password\n']

1行目にカラム名があるので、readline().split(‘,’)でカラムを1つずつとり、リスト化します。

しかし、最後の要素に改行が含まれてしまっています。

readline()は1行文とってくるので、最後の改行まで読み込んでしまいました。

 

これを解決するには、rstrip()を使用します。

csv_file = open('sample.csv', 'r')

column_list = csv_file.readline().rstrip().split(',')

print(column_list) # =>['id', 'name', 'password']

rstrip()をreadline()で1行読み込み後に使用することで、末尾の改行、スペース、タブを削除してくれます。

 

では、実際にテーブル指向で読み込んで、そのデータを使ってtsvファイルのようにタブ区切りのデータとして表示させたプログラムが下記です。

 

csv_file = open('sample.csv', 'r')

column_list = csv_file.readline().rstrip().split(',')


# 最後までファイルを1行ずつ読み込み、リストにレコードをいれる。
recoad_list = []
recoad = csv_file.readline()
while recoad :
    recoad_list.append(recoad.rstrip().split(','))
    recoad = csv_file.readline()

# 下記のデータが入ります。
# column_list => ['id', 'name', 'password']
# recoad_list => [['1', 'tanaka', 'hogehoge'], ['2', 'sugino', 'sugisugi'], ['3', 'haruka', 'hogahoga']]

# タブ区切りをjoin()で行い、表形式にして見やすくする。
print('\t'.join(column_list))
for recoad in recoad_list:
    print('\t'.join(recoad))

実行結果

id      name    password
1       tanaka  hogehoge
2       sugino  sugisugi
3       haruka  hogahoga

関連記事