爬虫類のCSVファイルストレージ

4909 ワード

ほんの少し
CSVは、すべてComma-Separated Valueと呼ばれ、中国語ではカンマ区切り値または文字区切り値と呼ぶことができ、ファイルは純粋なテキスト形式でテーブルデータを格納します.このファイルは文字列で、任意の数のレコードからなり、レコード間を改行で区切ることができます.各レコードはフィールドで構成され、フィールド間の区切り記号は他の文字または文字列であり、最も一般的なのはカンマまたはタブです.ただし、すべてのレコードには、構造化テーブルの純粋なテキスト形式に相当する完全に同じフィールドシーケンスがあります.Excelファイルよりも簡潔で、XLSテキストはスプレッドシートで、テキスト、数値、式、フォーマットなどの内容が含まれていますが、CSVにはこれらの内容が含まれていません.特定の文字で区切られた純粋なテキストで、構造が簡単ではっきりしています.そのため、CSVでデータを保存するのが便利な場合があります.
デュアルライト
1基本的な使い方
1.1コード
import csv
#   ,  data.csv  ,          w(   ),newline         ,
#        ,    csv  writer()         ,
#      ,    writerow()               。
with open('data.csv', 'w',newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['id', 'name', 'age'])
    writer.writerow(['10001', 'Mike', 20])
    writer.writerow(['10002', 'Bob', 22])
    writer.writerow(['10003', 'Jordan', 21])

1.2結果
id,name,age
10001,Mike,20
10002,Bob,22
10003,Jordan,21

2列と列の区切りを変更する
2.1コード
import csv

with open('data.csv', 'w',newline='') as csvfile:
    #              delimiter   ,                  
    writer = csv.writer(csvfile, delimiter=' ')
    writer.writerow(['id', 'name', 'age'])
    writer.writerow(['10001', 'Mike', 20])
    writer.writerow(['10002', 'Bob', 22])
    writer.writerow(['10003', 'Jordan', 21])

2.2結果
id name age
10001 Mike 20
10002 Bob 22
10003 Jordan 21

3複数行同時書き込み
3.1コード
import csv

with open('data.csv', 'w',newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['id', 'name', 'age'])
    #   writerows()        ,            
    writer.writerows([['10001', 'Mike', 20], ['10002', 'Bob', 22], ['10003', 'Jordan', 21]])

3.2結果
id,name,age
10001,Mike,20
10002,Bob,22
10003,Jordan,21

4辞書書き込み方式
4.1点睛
一般的には、爬虫類が這い出すのは構造化データであり、辞書で表すのが一般的です.csvライブラリにも辞書の書き込み方法が提供されています.
4.2コード
import csv

with open('data.csv', 'w',newline='') as csvfile:
    fieldnames = ['id', 'name', 'age']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'id': '10001', 'name': 'Mike', 'age': 20})
    writer.writerow({'id': '10002', 'name': 'Bob', 'age': 22})
    writer.writerow({'id': '10003', 'name': 'Jordan', 'age': 21})

4.3結果
id,name,age
10001,Mike,20
10002,Bob,22
10003,Jordan,21

4.4説明
ここではまず3つのフィールドを定義し、fieldnamesで表し、DictWriterに渡して辞書書き込みオブジェクトを初期化し、writeheader()メソッドを呼び出してヘッダ情報を先に書き込み、writerow()メソッドを呼び出して対応する辞書に入力すればよい.
5追加方式書き込み
5.1点眼
書き込みを追加したい場合は、open()関数の2番目のパラメータをaに変更するファイルの開きモードを変更できます.
5.2コード
import csv

with open('data.csv', 'a',newline='') as csvfile:
    fieldnames = ['id', 'name', 'age']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writerow({'id': '10004', 'name': 'Durant', 'age': 22})

5.3結果
id,name,age
10001,Mike,20
10002,Bob,22
10003,Jordan,21
10004,Durant,22

6中国語の書き込み
6.1点眼
中国語の内容を書き込む場合、文字符号化の問題が発生する可能性があります.open()パラメータに符号化フォーマットを指定する必要があります.
6.2コード
import csv

with open('data.csv', 'a', encoding='utf-8',newline='') as csvfile:
    fieldnames = ['id', 'name', 'age']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writerow({'id': '10005', 'name': '  ', 'age': 22})

6.3結果
id,name,age
10001,Mike,20
10002,Bob,22
10003,Jordan,21
10004,Durant,22
10005,  ,22

さんよみとり
1コード
import csv
#         Reader  ,            ,           。
#   ,  CSV         ,         。
with open('data.csv', 'r', encoding='utf-8',newline='') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row)

2結果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_1_3.py
['id', 'name', 'age']
['10001', 'Mike', '20']
['10002', 'Bob', '22']
['10003', 'Jordan', '21']
['10004', 'Durant', '22']
['10005', '  ', '22']