2016-06-02 10 views
-1

私は日付フィールドを含むcsvファイルで作業していますが、日付は1986-8-1または1986-08の形式でsqlite3データベースに読み込む必要があるときに1/8/1986のようにフォーマットされます-01。私はこの問題について多くの人が話しているのを見てきましたが、私は答えが与えられていることを本当に理解していませんでした。ここで私はそれがうまくいくと思う方法です:特定のフィールドの場合、csvリーダーはsqliteで使用できる形式で日付を再解析するコンバータメソッドに出力します。私はsqlite自体が変換コードを作るために使用できるとは思わない、そうでなければおそらく代わりにそれを使用します。私はこのコンバータの方法がloadcsvメソッドでどのように動作するかはわかりません。Pythonを使って、csvファイルのm(m)/ dd/yyyyに格納されている日付をsqliteで使用するためにyyyy-mm-ddに変換するにはどうすればよいですか?

答えて

2

追加パッケージをインストールしない場合は、次の操作を実行できます。

>>> from datetime import date 
>>> d = '1/8/1986' 
>>> date(*reversed([int(x) for x in d.split('/')])).strftime('%Y-%m-%d') 
'1986-08-01' 
+0

これは、csvファイルから読み取るコードとの関係ではどこですか? – cluemein

+0

@cluemein:CSVファイルから行を読み終えたら、DBに書き込む前に日付を含むすべての列を変換する必要があります。私は本当にあなたのコードを見ることなく、より詳細な答えを与えることはできません。 – niemmi

+0

実際にそれを考え出した。 – cluemein

2

pip install python-dateutil

その後、

from dateutil.parser import parse as date_parse 
fixed_date_string = date_parse(my_date_string).strftime("%Y-%m-%d") 

か、単にこれを行う...その、おそらく簡単にあなた

import re 
with open("fixed_csv.csv","wb") as f: 
    f.write(re.sub("(\d\d?)/(\d\d)/(\d{4})","\\3-\\2-\\1",open("my.csv").read()) 

はその後、ちょうどあなたの入力として "fixed_csv.csv" を使用のための...

+0

場合、これはCSVファイルから読み込むためのコードに関連して行きますか? – cluemein

+0

申し訳ありませんが、頭がおかしくなっているかもしれません。これがクラスの割り当てであれば、先生に助けを求めてください...そしてもっとチュートリアルをする必要があります。日付 " –

+0

実際に私はすでにその部分を笑ったと思った – cluemein

0

これが無い輸入品と非常に単純です:

olddate="1/21/2010" 
m,d,y=map(str,olddate.split('/')) 
newdate=y+'-'+m+'-'+d 
+0

これは、csvファイルから読み取るコードとの関係ではどこですか? – cluemein

関連する問題