2012-05-16 86 views
1

我正在使用Python的csv.reader將一組日期爲&的文件座標從列表中移除。下面是從.csv和代碼示例行:Python csv.reader自動轉換ISO日期?

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格式更改爲日曆格式:

['2012年5月6日','5/13/2012','35.20068' ,'-89.79318']

對這裏發生的事情有任何想法?是什麼csv.reader是改變字符串?我能做些什麼來阻止它或將其改回ISO格式?

+2

'csv.reader'不會改變任何東西。您認爲正在打開的文件可能與實際打開的文件不同。 –

回答

1

csv.reader沒有改變任何東西。您認爲正在打開的文件可能與實際打開的文件不同。

爲了證明這一點來看:

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

的最可能的原因是'inovation.csv'文件,你所看到的是在不同的目錄,你的程序在打開'inovation.csv'

+0

總noob錯誤。史蒂文現身。我忘記了我重新運行了innovation.csv文件,但忘了從原始數據列表中更改日期格式。這也解釋了失蹤的「165」。 非常感謝您的快速回復! – grizwaldstrip

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是在做內部行爲而不是追加行嗎?

+0

謝謝,約翰。它更簡單:我在一個不同的目錄中使用舊文件。不過感謝您的幫助! – grizwaldstrip