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 回答