Python日期时间函数输出“月”的重复条目。日期格式为'%b%d,%Y' &安培; '%B%d,%Y'

时间:2018-02-07 04:15:55

标签: python datetime

我正在阅读一个包含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

1 个答案:

答案 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