この記事では、python に関する関連知識を提供します。主に csv ファイルの書き込みと読み取りに関連する問題を紹介します。CSV は一般的に使用されるテキスト形式で、数値や文字などのテーブル データを保存するために使用されます。皆様のお役に立てれば幸いです。
推奨学習: python チュートリアル
CSV (カンマ区切り値)、つまりカンマ区切り値 (別名カンマ区切り値)区切り文字はカンマ以外でもよいため、文字で区切られた値として、数値や文字を含む表形式のデータを格納するためによく使用されるテキスト形式です。多くのプログラムは、データを処理するときに csv 形式のファイルに遭遇します。 Python には、csv ファイルの読み取りを処理するために特別に使用される csv モジュールが付属しています。
ライター オブジェクトを作成することで、主に 2 つのメソッドが使用されます。 1 つは writerow で、行を書き込みます。もう 1 つは、複数行を書き込む writerows です。
DictWriter を使用して、辞書を使用してデータを書き込みます。
について話しましょう。最初の書き込み方法: ライター オブジェクトを作成して書き込みます (一度に 1 行ずつ書き込みます)
手順 : 1. データとテーブル ヘッダーの作成 2. ライター オブジェクトの作成 3. ヘッダーの書き込み 4. トラバース
import csv person = [('xxx', 18, 193), ('yyy', 18, 182), ('zzz', 19, 185)]# 表头header = ['name', 'age', 'height']with open('person.csv', 'w', encoding='utf-8') as file_obj: # 1:创建writer对象 writer = csv.writer(file_obj) # 2:写表头 writer.writerow(header) # 3:遍历列表,将每一行的数据写入csv for p in person: writer.writerow(p)
開いてみると、書き込まれたデータが途中で改行されていることがわかります。
驚くべき : では、この問題はどうやって解決すればいいのでしょうか?
ハッカー : とても簡単です データを書き込むときにパラメータを追加するだけです
newline='' 順番に改行を防ぐために と書きます。 修正コードは以下のとおりです。
import csv# 数据person = [('xxx', 18, 193), ('yyy', 18, 182), ('zzz', 19, 185)]# 表头header = ['name', 'age', 'height']with open('person.csv', 'w', encoding='utf-8', newline='') as file_obj: # 创建对象 writer = csv.writer(file_obj) # 写表头 writer.writerow(header) # 遍历,将每一行的数据写入csv for p in person: writer.writerow(p)
✅ライターオブジェクトを作成する(複数行を一度に書く)
手順 : 1. データとヘッダーの作成 2. Writer オブジェクトの作成 3. ヘッダーの書き込み 4. writerows に処理したいデータを渡す
import csv# 数据person = [('xxx', 18, 193), ('yyy', 18, 182), ('zzz', 19, 185)]# 表头header = ['name', 'age', 'height']with open('person.csv', 'w', encoding='utf-8', newline='') as file_obj: # 创建对象 writer = csv.writer(file_obj) # 写表头 writer.writerow(header) # 3.写入数据(一次性写入多行) writer.writerows(person)
注意事項 : 辞書を使用して書き込む場合、渡されるデータ形式に注意してください辞書である必要があります 辞書でない場合は、エラーが報告されます
AttributeError: 'tuple' object has no attribute 'keys'
ステップ 1 .データとヘッダーを作成します ( データは辞書形式である必要があります ) 2. DictWriter オブジェクトを作成します 3. ヘッダーを書き込みます 4. データを書き込みます
import csv# 数据person = [ {'name': 'xxx', 'age': 18, 'height': 193}, {'name': 'yyy', 'age': 18, 'height': 182}, {'name': 'zzz', 'age': 19, 'height': 185},]# 表头header = ['name', 'age', 'height']with open('person.csv', 'w', encoding='utf-8', newline='') as file_obj: # 1.创建DicetWriter对象 dictWriter = csv.DictWriter(file_obj, header) # 2.写表头 dictWriter.writeheader() # 3.写入数据(一次性写入多行) dictWriter.writerows(person)
import csvwith open('person.csv', 'r', encoding='utf-8') as file_obj: # 1.创建reader对象 reader = csv.reader(file_obj) print(reader)
修正されたコードは次のとおりです:
import csvwith open('person.csv', 'r', encoding='utf-8') as file_obj: # 1.创建reader对象 reader = csv.reader(file_obj) # 2.遍历进行读取数据 for r in reader: print(r)
['name', 'age', 'height']['xxx', '18', '193']['yyy', '18', '182']['zzz', '19', '185']
print(r[0])
name xxx yyy zzz
import csvwith open('person.csv', 'r', encoding='utf-8') as file_obj: # 1.创建reader对象 dictReader = csv.DictReader(file_obj) # 2.遍历进行读取数据 for r in dictReader: print(r)
OrderedDict([('name', 'xxx'), ('age', '18'), ('height', '193')])OrderedDict([('name', 'yyy'), ('age', '18'), ('height', '182')])OrderedDict([('name', 'zzz'), ('age', '19'), ('height', '185')])
print(r['name'])
xxx yyy zzz
以上がPython知識まとめ:csvファイルの書き込みと読み込みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。