我正在阅读一个包含5列的文本文件。第4列包含不同日期格式的日期值以及其他数据类型。
现在,我希望以格式'%b%d,%Y'输出日期。并且'%B%d,%Y'到不同的文本文件。
日期格式示例:
%b%d,%Y - > 2009年2月17日
%B%d,%Y - > 2009年2月17日
我遇到的问题是,两种日期格式都会输出" May"两次,因为" May"的3个字母缩写与完整月份名称相同。
因此,为了避免重复,我想告诉我的程序不要输出任何具有月份的日期" May"当日期格式为"%b%d,%Y"。
我的代码为"%b%d,%Y"日期格式在底部提供。我想我需要添加一个if语句来解决这个问题,但是我收到了if语句的以下错误消息。我有什么想法吗?
AttributeError:' method_descriptor'对象没有属性' row'
我的代码:
from datetime import datetime
import csv
with open('file1.csv', 'r') as f_input, open('file2.txt', 'w') as f_output:
csv_input = csv.reader(f_input)
csv_output = csv.writer(f_output)
for row in csv_input:
if datetime.date.row[3].strftime("%b") == 'May':
pass
else:
for date_format in ['%b %d, %Y']:
try:
converted = datetime.strptime(row[3], date_format)
csv_output.writerow([row[0], row[1], row[2], converted.strftime(date_format), row[4]])
except ValueError:
pass
答案 0 :(得分:1)
我能够通过在我的代码中添加以下if语句来找到解决方案。
for date_format in ['%b %d, %Y']:
try:
converted = datetime.strptime(row[3], date_format)
if datetime.date(converted).strftime("%b") == 'May':
pass
else:
csv_output.writerow([row[0], row[1], row[2], converted.strftime(date_format), row[4]])
except ValueError:
pass