2017-11-13 30 views
1

私のクエリはデータを取得し、CSVファイルに格納します。以下に示すように、私は、1970-01-01 00:00:00に等しいフィールドがあれば、それをCSVに書き込む前にnullにするかどうかを示すマッピングを追加しました。CSVファイルにNullを追加する

ただし、このマッピングを実行するとエラーが発生します。

マイコード:

from datetime import datetime 
import csv 



csv_file = 'File_' + str(datetime.now().strftime('%Y_%m_%d - %H.%M.%S')) + '.csv' 


header_names = { 'VT': 'Side', 'NCR': 'ExTime', 'N': 'Name', 'DT': 'Party', ' RD ': 'Period', ‘DATE’:’Date’} 

with open(csv_file, 'w', newline='') as f: 
    w = csv.DictWriter(f, fieldnames=header_names.keys(), restval='', extrasaction='ignore') 
    w.writerow(header_names,) 
    for doc in res['hits']['hits']: 
     my_dict = doc['_source'] 


mapping = {0: "None",1: "yes", 6: "no", 9: "maybe", 100:"no/yes", 101: "no/maybe"} 
VT1 = my_dict['VT'] 
my_dict['VT'] = mapping.get(int(VT1), VT1) 

mapping1 = {0: "New", 1: "Cancel", 2: "Future"} 
DT1 = my_dict['DT'] 
my_dict['DT'] = mapping1.get(int(DT1), DT1) 


mapping2 = {1920-01-01 00:00:00: 'Null'} 
PT1 = my_dict['DATE'] 
my_dict['DATE'] = mapping2.get(int(PT1), PT1) 


w.writerow(my_dict) 

エラー1:

mapping2 = {01/01/1970 00:00:00: ' '} 
       ^
SyntaxError: invalid token 

エラー2

Traceback (most recent call last): 
    File "C:/Users/rich/.PyCharmCE2017.2/config/scratches/CSV.py", in <module> 
    my_dict['DATE'] = mapping12.get(int(PT1), PT1) 
ValueError: invalid literal for int() with base 10: '1920-01-01 00:00:00' 

がどのように日付が1920年1月1日プットに等しい場合、私はできると言っていますヌルという言葉?

答えて

1

エントリにデータ型がありません。

文字列を扱う場合は、文字列でなければなりません。トレースバック(最後の最新の呼び出し):: ファイル「C:

mapping2 = { "1920-01-01 00:00:00": "Null" } 
PT1 = my_dict['DATE'] 
my_dict['DATE'] = mapping2.get(PT1, PT1) 
+0

こんにちは、私は、しかし、私はまだのエラーを取得し、上記を追加しました/Users/rich/.PyCharmCE2017.2/config/scratches/csv.py "、257行目 my_dict ['DATE'] = mapping2.get(int(PT1)、PT1) ValueError:基数10のint()のリテラルが無効です: '1920-01-01 00:00:00 ' –

+0

あなたはこれを行う方法を知っていますか? –

+0

PT1を 'int'として型変換しないでください。動作するはずです。日付の文字列を整数に型キャストすることはできません。データ型を調べ、正しく使用していることを確認する必要があります。 –

関連する問題