はじめに
CSV操作の備忘録です💁
初心者です😅
間違えてる部分多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇
🦁 結論 🦁
押さえておくべき点
- CSVはカンマで区切られたテキストファイル
- CSVモジュールを使って、CSVファイルを開き、読み書きできる
- CSVはテキスト形式なので、数字や日付も文字列として扱われることがある
注意点
- エンコードのマッチングしてない場合、文字化けする
エンコーディングとは?
エンコーディングは、文字をコンピュータで扱うためのコードに変換する方法。日本語の文字は「UTF-8」や「Shift_JIS」などが代表的。
よくある文字化け例
- Shift_JISで保存されたファイルをUTF-8で開く
- UTF-8で保存されたファイルをShift_JISで開く
UTF-8の記載例
sample.py
with open('example.csv', mode='r', encoding='utf-8') as file:
Shift_JISの記載例
sample.py
with open('example.csv', mode='r', encoding='shift_jis') as file:
CSVの読み込み
sample.py
import csv
# CSVファイルを開く
with open('開きたいファイル.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
# 各行を読み込む
for row in reader:
print(row)
CSVの書き込み
sample.py
import csv
# 書き込むデータ(商品名と価格)
data = [['商品名', '価格'], ['ペン', 100], ['ノート', 300], ['消しゴム', 50]]
# CSVファイルに書き込む
with open('ファイル名.csv', mode='w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
# データをファイルに書き込む
for row in data:
writer.writerow(row)
新しくファイルを作成する場合
mode='w'を指定して、指定するファイル名が存在しない場合は新しい作成する。また存在してる場合は上書き保存される。
newline=''
newline='' の主な役割は、改行コードの扱いを制御するために必要。
特にWindows環境では、この指定をしないと余計な改行が挿入されることがある。
CSVの編集
sample.py
import csv
# 既存のCSVファイルを読み込む
with open('products.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
data = list(reader)
# 商品名が「ノート」の行の価格を350に変更
for row in data:
if row[0] == 'ノート':
row[1] = 350
# 編集したデータをCSVファイルに書き込む
with open('すでにあるファイル.csv', mode='w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)