1

Pythonのcsv.readerを使用して、ファイルから一連の日付と座標をリストに追加しています。.csvとコードのサンプル行は次のとおりです。

2012-05-06,2012-05-13,165,35.20068、-89.79318

    with open('innovation.csv', 'rb') as f:
       reader = csv.reader(f)
       for row in reader:
         parseMe.append(row)

問題は、何らかの理由で、日付がリストに追加されると、文字列がISO形式からカレンダー形式に変更されることです。

['5/6/2012'、 '5/13/2012'、 '35.20068'、'-89.79318']

ここで何が起こっているのかについて何か考えはありますか?文字列を変更しているのはcsv.readerですか?それを防ぐ、またはISO形式に戻すにはどうすればよいですか?

4

2 に答える 2

1

csv.reader何も変更していません。開いていると思われるファイルは、実際に開いているファイルとは異なる可能性があります。

この実行を証明するには:

with open('innovation.csv', 'r') as f:
    print f.read()

これの最も可能性の高い原因は、あなたが見ているファイルがあなたのプログラムが開いている'inovation.csv'ものとは異なるディレクトリにあるということです。'inovation.csv'

于 2012-05-16T17:33:22.963 に答える
1

Python 2.7.3で簡単なテストを実行しただけです(異なる結果が得られる場合は、使用しているバージョンを教えてください。これは、異なるバージョンの「機能」またはバグである可能性があります)。

data = "2012-05-06,2012-05-13,165,35.20068,-89.79318\n2012-05-06,2012-05-13,165,35.20068,-89.79318\n"
import csv
import StringIO
infile = StringIO.StringIO(data)
reader = csv.reader(infile)
for row in reader:
    print row

csvが日付に対して何もしていないことを確認するための出力:

['2012-05-06', '2012-05-13', '165', '35.20068', '-89.79318']
['2012-05-06', '2012-05-13', '165', '35.20068', '-89.79318']

csvは基本的にstring.split('、')を実行しているだけです(少なくともこの単純な入力では)、データの他の処理は実行していません。また、出力にテストの「165」データが欠落していることにも気づいています。ParseMeは、行を追加する以外の内部的な処理を行っていますか?

于 2012-05-16T17:44:23.230 に答える