テーブル形式のデータを作った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