私はcsv.reader
をpythonで使用して、csvファイルを辞書に読み込みます。 CSVファイルの最初の列は、DateTimeオブジェクトとして読み出され、dict
の鍵となる(2つの可能なフォーマットのいずれかで)日付であり、そしてIはまた、列3及び4を読み取る:csv.readerが最初の行を逃す
import datetime as dt
import csv
with open(fileInput,'r') as inFile:
csv_in = csv.reader(inFile)
try:
dictData = {(dt.datetime.strptime(rows[0], '%d/%m/%Y %H:%M')): [rows[3], rows[4]]
for rows in csv_in}
except:
dictData = {(dt.datetime.strptime(rows[0], '%Y-%m-%d %H:%M:%S')): [rows[3], rows[4]]
for rows in csv_in}
それファイル内の最初の日付(1/7/2012 00:00
)が辞書に表示されない点を除き、動作します。 csv.reader
に最初の行がヘッダー行でないことを伝える必要がありますか?
あなたが書いたコードはそのフォーマット(2012年1月7日00:00)で動作し、最初の行を読みます。私は簡単なテストを行い、すべての行を読みました。しかし、 'try'と' except'を逆にすると、最初の行が見逃されるので、あなたのアプローチは健全ではありません。もし私があなただったら、私は日付形式を検出して、ファイルの先頭を探します(ドキュメントのSnifferの例のように)。それはまたあなたの試し/例外を避けるでしょう、あなたは事前にその形式を知っているだろうから。フォーマットのエラーをキャッチするだけでも '試してみることができます。 –
ありがとうございます。実際には、入力のほとんどはYYYY-MM-DD hh:mm:ssの形式になっていますので、この形式にすべて変換してただ1つの形式を読み込みます。しかし、なぜ試してみましょう:...を除いて:行を欠場する? – doctorer