CSV (Comma Separated Values) 形式は、スプレッドシートとデータベースの最も一般的な入出力ファイル形式です。CSV 形式は、RFC 4180 仕様がリリースされる何年も前から使用されていましたが、当時は適切な標準がなかったため、アプリケーションによって読み書きされるデータには微妙な違いが生じます。この違いにより、複数のソースからの CSV ファイルを処理することが困難になります。ただし、区切り文字はさまざまですが、そのようなファイルの一般的な形式は似ているため、そのようなデータを効率的に処理する別のモジュールを作成して、プログラマーをデータの読み取りと書き込みの面倒な詳細から解放することができます。
csvモジュールはCSV形式のフォームデータの読み書きを実装しています。「Excel互換でデータファイルを出力する」「Excelプログラムが出力したデータファイルを読み込む」などの機能を提供しており、プログラマーはExcelが採用しているCSV形式の詳細を知る必要がありません。このモジュールを使用して、他のアプリケーションで使用できる CSV 形式を定義したり、特定のニーズに合わせて CSV 形式を定義したりすることもできます。
おすすめチュートリアル: python公式サイト:csvモジュール 中国語チュートリアル
公式ウェブサイトのチュートリアルは最も包括的ですが、比較的わかりにくいので、辛抱強く読んでください!
概要
csv には 2 つの重要な API があります。
read
-
機能インターフェース:
with open('eggs.csv', newline='') as csvfile: spamreader = csv.reader(csvfile) for row in spamreader: print(row)
-
辞書インターフェース
with open("./test.csv", "r") as csvfile: reader = csv.DictReader(csvfile) for row in reader: print(row['nnc']) print(row['input']) print(row['output'])
-
write
-
機能インターフェース:
test_list = [ "January", "February", "March", "April", "May", "June", ] with open("./test2.csv", "w") as f: cw = csv.writer(f) cw.writerow(test_list)
-
辞書インターフェース
with open("test.csv", "w") as f: fieldnames = ['nnc', 'input', 'output'] writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() for j in j_info: writer.writerow(j) print(j)
-
csvファイルを書く
- 辞書インターフェース
csvを書く
以下の内容を書きたい場合は、jsonファイルからオブジェクトをシリアル化し、jsonオブジェクトを転置し、jsonオブジェクトをcsvファイルに書き込めます。
import csv
import json
with open("./test.json", "r") as f:
j_info = json.loads(f.read())
with open("test.csv", "w") as f:
fieldnames = ['nnc', 'input', 'output']
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for j in j_info:
writer.writerow(j)
print(j)
test.json
ドキュメントの内容
[
{
"nnc": "name",
"input": [
1,
2,
3
],
"output": [
2,
3,
4
]
},
{
"nnc": "name",
"input": [
1,
2,
3
],
"output": [
2,
3,
4
]
},
{
"nnc": "name",
"input": [
1,
2,
3
],
"output": [
2,
3,
4
]
},
{
"nnc": "name",
"input": [
1,
2,
3
],
"output": [
2,
3,
4
]
},
{
"nnc": "name",
"input": [
1,
2,
3
],
"output": [
2,
3,
4
]
}
]