86122


Pythonでcsv出力処理を行なっているのですが  
「１ー１」で出力すると日付になってしまいます

例えば、エクセルで「１ー１」を手入力すると１月１日になると思います。そうではなく「１ー１」のまま出力されたいです。

頭に‘をつけると文字列として認識してくれるのですが、プログラムで「’」+文字列でやるとただの文字列連結になって、「‘１ー１」になってしまいます。日付問題は解消されますが、頭に‘がついています。

うまく「１ー１」を出力する方法ないでしょうか

プログラムは仕事の関係でお見せすることが出来ず申し訳ありません。


CC BY-SA 4.0
2022-02-03T09:50:49.550
86117
2022-02-03T12:10:46.057
29442
question
python csv
csvで文字列が日付になる問題


古い記事だけど, データ交換時のポイントや, CSVの公式仕様的なドキュメントへのリンクがあります

  * [CSVファイルフォーマットの解説](https://codezine.jp/article/detail/2364)

wikipedia にも <https://ja.wikipedia.org/wiki/Comma-Separated_Values>

それを踏まえた上で, 以下のドキュメントに 各種のパラメーターが載ってるので, それを利用するとよいかもです

(docs.python.org) [csv --- CSV
ファイルの読み書き](https://docs.python.org/ja/3/library/csv.html)

  * 区切り文字(`delimiter`)
  * 引用符文字(`quotechar`)
  * 引用符(`quoting`) … `quoting=csv.QUOTE_MINIMAL`, `quoting=csv.QUOTE_ALL` など

`quoting=csv.QUOTE_NONNUMERIC` あるいは `quoting=csv.QUOTE_ALL` 指定すれば可能かも？

* * *

たぶんエクセル側にも, 読み込み時の指定が可能なはずだと推測されます  
(カンマ区切りとかタブ区切りとか, 引用符付いてれば文字列にするとか)

Python側の出力変えてもうまく行かない場合には  
それらの設定も考慮するとよいかも


CC BY-SA 4.0
2022-02-03T10:18:58.497
86118
2022-02-03T10:18:58.497
43025
86117
answer


CSVファイルへの出力は、たとえば

[code]

    1-1,2-2,3-3
    
[/code]

で良いです。CSVファイル形式としてはこれで合っています。

問題は、Excelがこのデータを読み込んだとき、そのセルの書式が勝手に日付になることだと思いますが、どうやって読み込んでいますか？

私の手元にあるのはMicrosoft Office 2013のExcel
2013ですが、空でもいいから何かブックを開き、「データ」タブの「外部データの取り込み」の「テキストファイル」を選ぶとファイル選択ダイアログが出て、そこで上記のCSVファイルを選ぶとテキストファイルウィザードが出て、元のデータの形式、区切り文字、区切ったあとの列のデータ形式を細かく指定することができます。列のデータ形式で文字列を選択すれば、余計な変換は行われません。


CC BY-SA 4.0
2022-02-03T12:10:46.057
86122
2022-02-03T12:10:46.057
45045
86117
answer