logo

PythonでCSVファイルを書く

CSV (カンマ区切り値) は、スプレッドシートやデータベースなどの表形式のデータを保存するために使用される単純なファイル形式です。 CSV ファイルには、表形式のデータ (数値とテキスト) がプレーンテキストで保存されます。ファイルの各行はデータ レコードです。各レコードは、カンマで区切られた 1 つ以上のフィールドで構成されます。フィールド区切り文字としてカンマを使用することが、このファイル形式の名前の由来です。 Python で CSV ファイルに書き込む方法について説明します。

PythonでCSVファイルを書く

以下に書く方法を示します CSVファイル パイソン :



  • Python csv.DictWriter() を使用して CSV ファイルに書き込む
  • csv.writer() を使用して CSV ファイルに書き込みます
    • パイプ区切り文字を含む CSV ファイルの書き込み
    • 引用符を含む CSV ファイルを作成する
    • カスタム引用文字を使用した CSV ファイルの書き込み
    • CSV ライターでのエスケープ文字の使用

Python DictWriter() を使用して CSV に書き込む

このクラスは、辞書を出力行にマップするライター オブジェクトを返します。

構文: csv.DictWriter(csvfile, fieldnames,restval=,extrasaction=’raise’,dialent=’excel’, *args, **kwds)

パラメーター:



  • csvファイル: write() メソッドを使用したファイル オブジェクト。
  • フィールド名: ディクショナリ内の値を渡す順序を識別するキーのシーケンス。
  • restval (オプション): 辞書のフィールド名にキーがない場合に書き込まれる値を指定します。
  • エクストラアクション (オプション): キーがフィールド名に見つからない場合、オプションの extrasaction パラメータは実行するアクションを示します。発生するように設定されている場合、ValueError が発生します。
  • 方言 (オプション): 使用される方言の名前。

この例では、学生のレコードが辞書として保存され、これらの辞書を使用して、university_records.csv という名前の CSV ファイルが生成されます。 `csv.DictWriter` クラスは、ヘッダーとしてのフィールド名と辞書データ行を CSV ファイルに書き込むために利用されます。

Python3






# importing the csv module> import> csv> # my data rows as dictionary objects> mydict>=> [{>'branch'>:>'COE'>,>'cgpa'>:>'9.0'>,>'name'>:>'Nikhil'>,>'year'>:>'2'>},> >{>'branch'>:>'COE'>,>'cgpa'>:>'9.1'>,>'name'>:>'Sanchit'>,>'year'>:>'2'>},> >{>'branch'>:>'IT'>,>'cgpa'>:>'9.3'>,>'name'>:>'Aditya'>,>'year'>:>'2'>},> >{>'branch'>:>'SE'>,>'cgpa'>:>'9.5'>,>'name'>:>'Sagar'>,>'year'>:>'1'>},> >{>'branch'>:>'MCE'>,>'cgpa'>:>'7.8'>,>'name'>:>'Prateek'>,>'year'>:>'3'>},> >{>'branch'>:>'EP'>,>'cgpa'>:>'9.1'>,>'name'>:>'Sahil'>,>'year'>:>'2'>}]> # field names> fields>=> [>'name'>,>'branch'>,>'year'>,>'cgpa'>]> # name of csv file> filename>=> 'university_records.csv'> # writing to csv file> with>open>(filename,>'w'>) as csvfile:> ># creating a csv dict writer object> >writer>=> csv.DictWriter(csvfile, fieldnames>=>fields)> ># writing headers (field names)> >writer.writeheader()> ># writing data rows> >writer.writerows(mydict)>

>

>

出力:

name,branch,year,cgpa Nikhil,COE,2,9.0 Sanchit,COE,2,9.1 Aditya,IT,2,9.3 Sagar,SE,1,9.5 Prateek,MCE,3,7.8 Sahil,EP,2,9.1>

csv.writer() を使用して CSV ファイルに書き込む

csv.writer>クラスは、CSV ファイルにデータを挿入するために使用されます。このクラスは、ユーザーのデータを区切り文字で区切られた文字列に変換するライター オブジェクトを返します。 csvfile オブジェクトは次のように開く必要があります。newline=''>そうしないと、引用符で囲まれたフィールド内の改行文字が正しく解釈されません。

構文: csv.writer(csvfile、方言=’excel’、**fmtparams)

パラメーター:

  • csvファイル: write() メソッドを使用したファイル オブジェクト。
  • 方言 (オプション): 使用される方言の名前。
  • fmtparams (オプション): 方言で指定されたパラメータを上書きする書式設定パラメータ。

この例では、university_records.csv という名前の CSV ファイルが作成され、学生のレコードが設定されます。ファイルには、名前、支店、年、CGPA などのフィールドが含まれています。個々の生徒のデータ行が CSV ファイルに書き込まれ、その後にフィールド名が続きます。

Python3




import> csv> # field names> fields>=> [>'Name'>,>'Branch'>,>'Year'>,>'CGPA'>]> # data rows of csv file> rows>=> [[>'Nikhil'>,>'COE'>,>'2'>,>'9.0'>],> >[>'Sanchit'>,>'COE'>,>'2'>,>'9.1'>],> >[>'Aditya'>,>'IT'>,>'2'>,>'9.3'>],> >[>'Sagar'>,>'SE'>,>'1'>,>'9.5'>],> >[>'Prateek'>,>'MCE'>,>'3'>,>'7.8'>],> >[>'Sahil'>,>'EP'>,>'2'>,>'9.1'>]]> # name of csv file> filename>=> 'university_records.csv'> # writing to csv file> with>open>(filename,>'w'>) as csvfile:> ># creating a csv writer object> >csvwriter>=> csv.writer(csvfile)> ># writing the fields> >csvwriter.writerow(fields)> ># writing the data rows> >csvwriter.writerows(rows)>

>

>

出力:

Name,Branch,Year,CGPA Nikhil,COE,2,9.0 Sanchit,COE,2,9.1 Aditya,IT,2,9.3 Sagar,SE,1,9.5 Prateek,MCE,3,7.8 Sahil,EP,2,9.1>

Python でパイプ区切り文字を含む CSV ファイルを作成する

この例では、データ行がパイプ (|>) 区切り文字。ファイルには、個人の名前、年齢、都市に関する情報が含まれています。

Python3




import> csv> # Define the data to be written to the CSV file> data>=> [> >[>'Name'>,>'Age'>,>'City'>],> >[>'Alice'>,>25>,>'New York'>],> >[>'Bob'>,>30>,>'Los Angeles'>],> >[>'Charlie'>,>35>,>'Chicago'>]> ]> # Specify the file name> filename>=> 'data_pipe_delimited.csv'> # Write data to the CSV file with a pipe delimiter> with>open>(filename,>'w'>, newline>=>'') as csvfile:> >csvwriter>=> csv.writer(csvfile, delimiter>=>'|'>)> >csvwriter.writerows(data)> print>(f>'Data has been written to {filename}'>)>

>

>

出力:

Name|Age|City Alice|25|New York Bob|30|Los Angeles Charlie|35|Chicago>

引用符を含む CSV ファイルの書き込み

この例では、students_data.csv という名前の CSV ファイルが生成され、各フィールドは二重引用符で囲まれます。ファイルには、学生の名前、支部、学年、CGPA スコアに関する情報が含まれています。

Python3




import> csv> # Define the rows data> rows>=> [> >[>'Nikhil'>,>'COE'>,>'2'>,>'9.0'>],> >[>'Sanchit'>,>'COE'>,>'2'>,>'9.1'>],> >[>'Aditya'>,>'IT'>,>'2'>,>'9.3'>],> >[>'Sagar'>,>'SE'>,>'1'>,>'9.5'>],> >[>'Prateek'>,>'MCE'>,>'3'>,>'7.8'>],> >[>'Sahil'>,>'EP'>,>'2'>,>'9.1'>]> ]> # Specify the file name> filename>=> 'students_data.csv'> # Write the rows data to the CSV file with quotes around each field> with>open>(filename,>'w'>, newline>=>'') as csvfile:> >csvwriter>=> csv.writer(csvfile, quoting>=>csv.QUOTE_ALL)> >csvwriter.writerows(rows)> print>(f>'Data has been written to {filename}'>)>

セントス vs レル
>

>

出力:

'Nikhil','COE','2','9.0' 'Sanchit','COE','2','9.1' 'Aditya','IT','2','9.3' 'Sagar','SE','1','9.5' 'Prateek','MCE','3','7.8' 'Sahil','EP','2','9.1'>

カスタム引用文字を使用した CSV ファイルの書き込み

この例では、students_data.csv という名前の CSV ファイルが、フィールドがパイプ (|>) 区切り文字をチルダで囲み (~>)。データには、学生の名前、支部、学年、CGPA スコアが含まれます。

Python3




import> csv> rows>=> [> >[>'Nikhil'>,>'COE'>,>'2'>,>'9.0'>],> >[>'Sanchit'>,>'COE'>,>'2'>,>'9.1'>],> >[>'Aditya'>,>'IT'>,>'2'>,>'9.3'>],> >[>'Sagar'>,>'SE'>,>'1'>,>'9.5'>],> >[>'Prateek'>,>'MCE'>,>'3'>,>'7.8'>],> >[>'Sahil'>,>'EP'>,>'2'>,>'9.1'>]> ]> filename>=> 'students_data.csv'> with>open>(filename,>'w'>, newline>=>'') as>file>:> >writer>=> csv.writer(>file>, quoting>=>csv.QUOTE_NONNUMERIC,> >delimiter>=>'|'>, quotechar>=>'~'>)> >writer.writerows(rows)> print>(f>'Data has been written to {filename}'>)>

>

>

出力:

~Nikhil~|~COE~|~2~|9.0 ~Sanchit~|~COE~|~2~|9.1 ~Aditya~|~IT~|~2~|9.3 ~Sagar~|~SE~|~1~|9.5 ~Prateek~|~MCE~|~3~|7.8 ~Sahil~|~EP~|~2~|9.1>

CSV でのエスケープ文字の使用

この例では、students.csv という名前の CSV ファイルが生成され、フィールドはパイプ (|>) 区切り文字。のquotechar>二重引用符 ('>) そしてそのescapechar>バックスラッシュ (>)、データ内の引用符を適切に処理できるようになります。

Python3




import> csv> rows>=> [> >[>'Nikhil'>,>'COE'>,>'2'>,>'9.0'>],> >[>'Sanchit'>,>'COE'>,>'2'>,>'9.1'>],> >[>'Aditya'>,>'IT'>,>'2'>,>'9.3'>],> >[>'Sagar'>,>'SE'>,>'1'>,>'9.5'>],> >[>'Prateek'>,>'MCE'>,>'3'>,>'7.8'>],> >[>'Sahil'>,>'EP'>,>'2'>,>'9.1'>]> ]> filename>=> 'students.csv'> with>open>(filename,>'w'>, newline>=>'') as>file>:> >writer>=> csv.writer(>file>, quoting>=>csv.QUOTE_NONE,> >delimiter>=>'|'>, quotechar>=>'''>, escapechar>=>''>)> >writer.writerows(rows)> print>(f>'Data has been written to {filename}'>)>

>

>

出力:

Nikhil|COE|2|9.0 Sanchit|COE|2|9.1 Aditya|IT|2|9.3 Sagar|SE|1|9.5 Prateek|MCE|3|7.8 Sahil|EP|2|9.1>