PythonでCSVファイルを開く:open関数のモードとエンコーディング完全ガイド

この記事では、Pythonで`open`関数を使用してCSVファイルを開く際のモードとエンコーディング指定について詳しく解説します。具体的なコード例とその解説、応用例を含めて詳しく説明します。

目次

はじめに

Pythonでファイルを操作する際、一般には`open`関数が用いられます。特にCSVファイルはデータ解析や自動化、Webアプリケーションなど様々な場面で使われるファイル形式です。`open`関数でCSVファイルを扱う際には、モードとエンコーディング指定が重要です。この記事ではその詳細について説明します。

open関数の基本

Pythonの`open`関数は、以下のような形で使用されます。


with open('ファイル名', 'モード', encoding='エンコーディング') as f:
    # 何らかの処理

– `’ファイル名’`: 開きたいファイルの名前
– `’モード’`: ファイルを開くモード(読み取り、書き込みなど)
– `encoding`: 文字エンコーディング(省略可)

モードの種類

モードには以下のようなものがあります。
– `r`: 読み取りモード
– `w`: 書き込みモード(ファイルが存在する場合、内容が削除されます)
– `a`: 追記モード(ファイルが存在する場合、内容の後に追記されます)
– `b`: バイナリモード(テキストではなく、バイナリデータとして読み書き)

エンコーディングの指定

Python3.xではデフォルトでUTF-8が使用されますが、指定することも可能です。
– `utf-8`: UTF-8エンコーディング
– `shift_jis`: Shift_JISエンコーディング
– `euc-jp`: EUC-JPエンコーディング

具体的なコード例

以下はCSVファイルを読み取るシンプルな例です。


with open('sample.csv', 'r', encoding='utf-8') as f:
    for line in f:
        print(line.strip().split(','))

このコードでは`sample.csv`をUTF-8で読み取り、各行をカンマで分割しています。

書き込み例

CSVファイルへの書き込み例は以下の通りです。


with open('output.csv', 'w', encoding='utf-8') as f:
    f.write('name,age\n')
    f.write('Alice,30\n')
    f.write('Bob,40\n')

`w`モードで開いた場合、すでにファイルが存在していればその内容は削除され、新しく書き込みが行われます。

応用例1:CSVファイルのフィルタリング

CSVファイルから特定の条件を満たす行だけを抽出する例です。


with open('sample.csv', 'r', encoding='utf-8') as f_in, open('filtered.csv', 'w', encoding='utf-8') as f_out:
    for line in f_in:
        cols = line.strip().split(',')
        if int(cols[1]) >= 30:  # ageが30以上のものを抽出
            f_out.write(line)

応用例2:CSVファイルのマージ

二つのCSVファイルをマージする例です。


with open('file1.csv', 'r', encoding='utf-8') as f1, open('file2.csv', 'r', encoding='utf-8') as f2, open('merged.csv', 'w', encoding='utf-8') as f_out:
    for line1, line2 in zip(f1, f2):
        cols1 = line1.strip().split(',')
        cols2 = line2.strip().split(',')
        f_out.write(f"{cols1[0]},{cols1[1]},{cols2[1]}\n")

まとめ

PythonでCSVファイルを開く際には`open`関数を使用しますが、その際のモードとエンコーディング指定が重要です。特にCSVファイルは多用されるため、正確にモードやエンコーディングを指定することで多くの作業が効率化します。

コメント

コメントする

目次