Python 如何添加具体的“;控制措施;去参加一个活动?(编辑:添加了完整功能)

Python 如何添加具体的“;控制措施;去参加一个活动?(编辑:添加了完整功能),python,python-3.x,Python,Python 3.x,我有以下功能: function(['28-02-2016','31-02-2016']) ['february', '*'] 编辑(全功能) 我得到这个错误: 6 month = str(monthStr)[3:5] 7 if month in months.keys(): ---> 8 if int(monthStr[:2]) <= calendar.monthrange(int(monthStr[-4

我有以下功能:

function(['28-02-2016','31-02-2016'])
['february', '*']
编辑(全功能)

我得到这个错误:

     6         month = str(monthStr)[3:5]
     7         if month in months.keys():
---> 8             if int(monthStr[:2]) <= calendar.monthrange(int(monthStr[-4:]), int(monthStr[3:5]))[1]:
     9                 returnList.append(months[month])
    10             else:

ValueError: invalid literal for int() with base 10: '20a1'

使用Python
time.strtime
time.strftime

import time

def get_month(date_string):
    try:
        t = time.strptime(date_string,'%d-%m-%Y')
        return time.strftime('%B', t).lower()
    except ValueError:
        return '*'
如果日期无效,将引发
ValueError
,在这种情况下返回
“*”

为函数中的每个日期字符串调用
get_month

def get_months(date_strings):
    return [get_month(date_string) for date_string in date_strings]

它告诉您
'20a1'
不是有效的整数文本。如果您得到一个
ValueError
,您可以假定它不是一个有效的日期,请参阅以了解错误处理。此外,您还可以通过
datetime
的内置解析大大简化,该解析将正确处理闰年等问题。Python告诉您,您的代码/输入中存在错误。我不知道“控件”是什么意思。显然,虽然“20a1”和“19a1”不是传递给
int
的有效值,“Python告诉我必须在列表编号8中放置一个控件”-否。你从哪里得到这个想法的?它只是告诉您
'20a1'
不是整数。您应该捕获该异常并返回
“*”
。我真的不能给你一个更具体的答案,因为你没有展示整个函数。@DanielRoseman int(*,base=10)你想说的不包括例如
函数(['bla-7-99','IIIIIII'])
编辑为使用
strftime
strftime
替代。因此,我只需将此小段落添加到功能测试中?@xli如果我想添加一个潜在日期列表作为输入,该怎么办?您可以将此功能添加到您的模块中。在另一个函数中,为列表中的每个可能日期调用
get_month
,并将每个结果添加到列表中,然后返回。更简洁地说,
return[get_month(monthStr)for monthStr in monthList]
function(['02-02-19a1'])
[*]
import time

def get_month(date_string):
    try:
        t = time.strptime(date_string,'%d-%m-%Y')
        return time.strftime('%B', t).lower()
    except ValueError:
        return '*'
def get_months(date_strings):
    return [get_month(date_string) for date_string in date_strings]