【问题标题】:Convert CSV column format from string to datetime将 CSV 列格式从字符串转换为日期时间
【发布时间】:2015-08-22 14:01:36
【问题描述】:

Python 3.4 ...我正在尝试将 CSV 中的特定列从字符串转换为日期时间并将其写入文件。我能够读取和转换它,但需要帮助将日期格式更改写入文件(最后一行代码 - 需要修改)。最后一行代码出现以下错误错误:预期序列。

import csv
import datetime

with open ('/path/test.date.conversion.csv') as csvfile:
    readablefile = csv.reader(csvfile)
    writablefile = csv.writer(csvfile)
    for row in readablefile:
        date_format = datetime.datetime.strptime(row[13], '%m/%d/%Y')
        writablefile.writerow(date_format)

【问题讨论】:

    标签: csv datetime python-3.x


    【解决方案1】:

    所以 date_format 是 datetime 类的一个实例。您需要格式化字符串以打印到文件。您可以使用标准:

    date_format.isoformat()
    

    或自定义您自己的格式:

    date_format.strftime('%Y-%m-%d %H:%M:%S')
    

    还有几件事需要注意。你不能像那样写入你正在读取的同一个文件。如果要覆盖该文件,请创建一个 tmp 文件,然后在完成后替换它,但最好只创建另一个文件。恕我直言,最好的解决方案是像这样充分利用标准输入和标准输出:

    import csv
    import sys
    from datetime import datetime
    
    FIELD = 13
    FMT = '%m/%d/%Y'
    
    readablefile = csv.reader(sys.stdin)
    writablefile = csv.writer(sys.stdout)
    for row in readablefile:
        dt = datetime.strptime(row[FIELD], FMT)
        row[FIELD] = dt.isoformat()
        writablefile.writerow(row)
    

    现在你可以像这样调用脚本了:

    cat /path/test.date.conversion.csv | python fixdate.py > another_file.csv
    

    此时,您可以利用 argparse 模块为您的脚本提供各种不错的参数,例如:

    • 要格式化哪个字段?
    • 什么输入和/或输出格式?

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 1970-01-01
      • 2014-08-10
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      相关资源
      最近更新 更多