【发布时间】:2020-10-03 02:54:15
【问题描述】:
我编写了一些代码来标准化 CSV 日期的格式。第一列可以包含两种不同的时间格式:06/13/20 和 06.13.2020
我希望所有数据看起来像 06/13/20。
with open(fileread) as f:
readCSV = csv.reader(f, delimiter=';')
for row in readCSV:
try:
datetime_object = datetime.datetime.strptime(row[0], '%m.%d.%Y') # get date
datetime_object = datetime_object.strftime('%m/%d/%y')
print(datetime_object)
save = datetime_object
except:
save = row[0]
with open(filewrite, '+a', newline='') as g:
out = [save, row[1], row[2], row[3], row[4]]
writer = csv.writer(g, delimiter=';')
print(out)
writer.writerow(out)
注意:我使用“保存”是因为我认为row[0] 中会保存某种格式。我用row[0]而不是save试了一下,没有其他效果。
所以“out”的终端输出如下所示:
['06/02/20',...]
但在 CSV 中它仍然是 06.13.2020
【问题讨论】:
-
您在文件打开行中使用了追加模式(在“+a”中用“a”标记),因此您更正的格式行被追加而不是覆盖。
-
小建议:不需要每次都打开输出文件和创建CSV writer。我会把它移到 for 循环之外。这样你就不需要像@DavidWierichs 指出的那样应用了。
-
是的,我把它移到外面,但是对大卫:新文件中没有正确的行,所以它们没有附加,它们不存在