Python csv.reader自动转换ISO日期?

时间:2012-05-16 17:19:37

标签: python date csv iso

我正在使用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格式?

2 个答案:

答案 0 :(得分:1)

csv.reader没有改变任何事情。您认为正在打开的文件可能与实际打开的文件不同。

证明这一点:

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

最可能的原因是您正在查看的'inovation.csv'文件位于与您的程序正在打开的'inovation.csv'不同的目录中。

答案 1 :(得分: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是做内部事情而不仅仅是追加行吗?