<p>首先,请阅读本文以供Python参考日期时间.strptime()格式字符串:
<a href="https://docs.python.org/3.5/library/datetime.html#strftime-strptime-behavior" rel="nofollow">https://docs.python.org/3.5/library/datetime.html#strftime-strptime-behavior</a></p>
<p>以及CSV解析:<a href="https://docs.python.org/3.5/library/csv.html" rel="nofollow">https://docs.python.org/3.5/library/csv.html</a></p>
<p>我的答案将只使用标准Python。作为一个有效的替代方案,您可以使用一个专门的数据分析库,如已经建议的pandas。在</p>
<p>您的<code>MM/dd/yyyy</code>将是strptime格式的<code>%m/%d/%Y</code>(实际上是C标准格式),而{<cd3>}将是{<cd4>}。在</p>
<p>现在我不确定您是希望python脚本“自动发现”日期,还是希望能够手动指定适当的列和格式。因此,我建议两个脚本:</p>
<p>这将转换“输入日期格式”映射中指定的列名称和输入格式中的所有日期:</p>
<pre><code>from datetime import datetime
import csv
# file that will be read as input
INPUT_FILENAME = 'yourfile.csv'
# file that will be produced as output (with properly formatted dates)
OUTPUT_FILENAME = 'newfile.csv'
INPUT_DATE_FORMATS = {'column2dt': '%m/%d/%Y', 'column6dt': '%d-%m-%Y'}
OUTPUT_DATE_FORMAT = '%d-%m-%YT%H:%MZ'
with open(INPUT_FILENAME, 'rt') as finput:
reader = csv.DictReader(finput, delimiter='|')
with open(OUTPUT_FILENAME, 'wt') as foutput:
writer = csv.DictWriter(foutput, fieldnames=reader.fieldnames, delimiter='|') # you can change delimiter if you want
for row in reader: # read each entry one by one
for header, value in row.items(): # read each field one by one
date_format = INPUT_DATE_FORMATS.get(header)
if date_format:
parsed_date = datetime.strptime(value, date_format)
row[header] = parsed_date.strftime(OUTPUT_DATE_FORMAT)
writer.writerow(row)
</code></pre>
<p>这将尝试使用input_DATE_格式指定的所有格式来解析输入文件中的每个字段,并将这些日期用OUTPUT_DATE_格式格式化后写入一个新文件:</p>
^{pr2}$