将CSV列格式从字符串转换为日期时间

将CSV列格式从字符串转换为日期时间,csv,datetime,python-3.x,Csv,Datetime,Python 3.x,Python 3.4。。。我正在尝试将CSV中的特定列从字符串转换为日期时间,并将其写入文件。我能够读取和转换它,但需要帮助将日期格式更改写入文件(最后一行代码-需要修改)。对于最后一行代码错误,我得到了以下错误:预期序列 import csv import datetime with open ('/path/test.date.conversion.csv') as csvfile: readablefile = csv.reader(csvfile) writablefi

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)

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

date_format.isoformat()
或自定义您自己的格式:

date_format.strftime('%Y-%m-%d %H:%M:%S')
还有几件事需要注意。你不能像那样写同一个文件。如果要覆盖该文件,请创建一个tmp文件,然后在完成后替换它,但最好只创建另一个文件。imho的最佳解决方案是充分利用stdin和stdout,如下所示:

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模块为脚本提供各种漂亮的参数,如:

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

    • 所以date\u格式是datetime类的一个实例。您需要格式化字符串以打印到文件。您可以选择以下标准:

      date_format.isoformat()
      
      或自定义您自己的格式:

      date_format.strftime('%Y-%m-%d %H:%M:%S')
      
      还有几件事需要注意。你不能像那样写同一个文件。如果要覆盖该文件,请创建一个tmp文件,然后在完成后替换它,但最好只创建另一个文件。imho的最佳解决方案是充分利用stdin和stdout,如下所示:

      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模块为脚本提供各种漂亮的参数,如:

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

        • 所以date\u格式是datetime类的一个实例。您需要格式化字符串以打印到文件。您可以选择以下标准:

          date_format.isoformat()
          
          或自定义您自己的格式:

          date_format.strftime('%Y-%m-%d %H:%M:%S')
          
          还有几件事需要注意。你不能像那样写同一个文件。如果要覆盖该文件,请创建一个tmp文件,然后在完成后替换它,但最好只创建另一个文件。imho的最佳解决方案是充分利用stdin和stdout,如下所示:

          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模块为脚本提供各种漂亮的参数,如:

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

            • 所以date\u格式是datetime类的一个实例。您需要格式化字符串以打印到文件。您可以选择以下标准:

              date_format.isoformat()
              
              或自定义您自己的格式:

              date_format.strftime('%Y-%m-%d %H:%M:%S')
              
              还有几件事需要注意。你不能像那样写同一个文件。如果要覆盖该文件,请创建一个tmp文件,然后在完成后替换它,但最好只创建另一个文件。imho的最佳解决方案是充分利用stdin和stdout,如下所示:

              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模块为脚本提供各种漂亮的参数,如:

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