ちょっとCSVファイルを取り扱うことがあったので調べてみました。
モジュールが用意されていて、公式ドキュメントにも使い方が載っています。
csv --- CSV ファイルの読み書き
CSVファイルとして次のような内容を想定します。
1列目 | 2列目 | 3列目 |
---|---|---|
HOGE | FOO | BAR |
1 | 2 | 3 |
ドキュメントの使用例通り、with open
を使って開いたファイルをcsv.reader
で読み込みましょう。
動作確認してません.py
import csv
with open('hoge.csv', newline='') as csvfile:
rows = csv.reader(csvfile, delimiter=',', quotechar='|')
for row in rows:
print(row)
# ['\ufeffHOGE', 'FOO', 'BAR']
# ['1', '2', '3']
以上のように、行一つが配列一つに対応して出力されます。
delimiter
パラメータに渡す文字を変更することで、タブ区切りのファイルなども読み込むことができます。
ところで気になるのは\ufeff
という謎の文字列。当然ながら、元のCSVファイルには含まれていないものです。
これはBOMと呼ばれる「テキストの始まりをプログラムに伝える」ことを目的とする目印なんだそうですね。
以下のようにエンコードを指定するパラメータを渡してあげると、この余計な文字は読み込まれなくなります。
with open('hoge.csv', newline='', encoding='utf-8-sig') as csvfile:
参考:\ufeffって???