LoginSignup
0
1

はじめに

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)
0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1