import csv
csv.register_dialect("MyDialect", quoting=csv.QUOTE_ALL, lineterminator='\n')
と書いて、
with open("sample.csv", "w", encoding="utf-8") as f: w = csv.writer(f, "MyDialect") w.writerow(header_list) w.writerows(array_list)
と書いて実行したら、行区切りが、\r\n のままで、どうして?と困惑した。。
書込み先 OPEN で、newline="" の指定が抜けてる。
付けると期待どおりの 、行区切りが、\n になる。
with open("sample.csv", "w", encoding="utf-8", newline="") as f: w = csv.writer(f, "MyDialect") w.writerow(header_list) w.writerows(array_list)
でも、これは Windows PC で実行した時の話であって、
with open("sample.csv", "w") as f:
で、Linux では open は、newline や encoding の指定を書かない
=================================
ダブルクォート全て付ける
cf = csv.writer(f, quoting=csv.QUOTE_ALL)
ダブルクォートを必要に応じてつける
cf = csv.writer(f, quoting=csv.QUOTE_MINIMAL)
非数値なら、ダブルクォートでくくる
cf = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
クォート括りなし
cf = csv.writer(f, quoting=csv.QUOTE_NONE)
=====================
あまりCSVでシングルクォートで括るということはしないが、
もしも、指定するなら、csv.writer で、
quotechar='\''