PythonでCSVに出力する時には以下のように記述しますが、1文字ずつ改行されてしまったり1文字ごとにカンマが入ってしまうことがあります。
実はCSV出力には2つのメソッドがあり、使い分けが必要です。
- writerow
- writerows
writerowは1次元配列の場合に使用し、writerowsは2次元配列の場合に使用します。
共通している点はどちらも配列に使用するということです。
実は文字列に使用すると、文字列を配列をみなして、1文字ずつに分解されてしまいます。
では今からその例と、対処法を見ていきましょう。
例① 1文字ずつカンマが入る場合
以下のコードを実行すると1文字ずつカンマが入ってしまいます。メソッドはwriterowを使用しています。
1 2 3 4 5 6 |
import csv data = "CSVに出力" file_path = "example.csv" with open(file_path, mode='w', newline='', encoding='UTF-8') as file: writer = csv.writer(file) writer.writerow(data) |
出力結果
C,S,V,に,出,力
1文字ずつカンマが挿入されてしまっています。
例② 1文字ずつ改行される場合
以下のコードを実行すると1文字ずつ改行されてしまいます。メソッドはwriterowsを使用しています。
1 2 3 4 5 6 |
import csv data = "CSVに出力" file_path = "example2.csv" with open(file_path, mode='w', newline='', encoding='UTF-8') as file: writer = csv.writer(file) writer.writerows(data) |
出力結果
C
S
V
に
出
力
1文字ずつ改行が入っています。
対処方法
では対象方法をご紹介します。
まずメソッドはwriterowを使用します。
そしてwriterowの()の中の変数を[]で囲みます。
修正後の以下のコードを実行してみましょう。
1 2 3 4 5 6 |
import csv data = "CSVに出力" file_path = "example.csv" with open(file_path, mode='w', newline='', encoding='UTF-8') as file: writer = csv.writer(file) writer.writerow([data]) |
出力結果
CSVに出力
期待通りの結果を得ることができました!
要するにwriterowメソッドは配列に対して使用するものなので、引数を[]で囲むことで配列化したということですね!
さいごに
いかがでしたでしょうか。
今回はPythonでCSV出力時に改行されて困っていたり、カンマが入ってしまう場合の対処法をご紹介しました。
少しでもこの記事が皆様のお役に立てれば幸いです。
コメント