将CSV列格式从字符串转换为日期时间
Python 3.4。。。我正在尝试将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
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模块为脚本提供各种漂亮的参数,如:
- 要格式化哪个字段
- 什么输入和/或输出格式
- 等等