PythonでBOM付きUTF-8ファイルを読み込む際には、エンコードを ‘utf_8_sig’ と指定します。これにより、BOM付きのUTF-8ファイルを適切に読み込むことができます。
import io
with io.open('sample.csv', 'rt', encoding='utf_8_sig') as f:
print(f.readlines())
上記のコードは、’utf_8_sig’ エンコーディングを使用してBOM付きUTF-8ファイルを読み込む一例です。
また、PythonでBOM付きUTF-8のCSVファイルを出力する場合も同様に ‘utf_8_sig’ を指定します。
import os, csv
header = ["header"]
output_data = ["文字コードがBOM付きのUTF-8", "のCSVファイルが出力したい"]
path = "./sample.csv"
def writecsv(path):
print("Output data path: " + path)
with open(path, 'w', encoding="utf_8_sig") as f:
writer = csv.writer(f, lineterminator='\n') # 改行コード(\n)を指定しておく
writer.writerow(header)
writer.writerow(output_data)
print("Complete!")
writecsv(path)
上記のコードは、’utf_8_sig’ エンコーディングを使用してBOM付きUTF-8のCSVファイルを出力する一例です。
このように、PythonでBOM付きUTF-8ファイルを取り扱う際には、エンコーディングとして ‘utf_8_sig’ を指定することが重要です。これにより、BOM付きUTF-8ファイルの読み込みや出力を適切に行うことができます。