我正在使用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格式?
答案 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是做内部事情而不仅仅是追加行吗?