如何编写if语句,尝试识别变量是否为格式为%Y-%m-%d或%Y-%m的日期?
像这样:
for i in list:
for element in i:
if element is a date:
list2.append(element)
列表是: [['日期','价值'],['2002-03','12 .9']]
我是: ['日期','价值']和['2002-03','12 .9']
元素是: '日期','价值','2002-03','12 .9'
答案 0 :(得分:2)
假设您的输入是字符串,您可以使用datetime包使用以下验证。
list = [['Date', 'Value'], ['2002-03', '12.9'],['2001-01','11.6']]
list2=[]
for i in list:
for element in i:
try:
datetime.datetime.strptime(element, '%Y-%m')
list2.append(element)
except ValueError:
continue
print list2
根据您的情况进行调整:
['2002-03', '2001-01']
输出是:
Request
答案 1 :(得分:1)
一种解决方案是编写一个函数,尝试将值解析为日期,循环遍历您想要支持的所有格式。如果它能够解析,则返回Database.BeginTransaction()
(或者,您可以返回已解析的值),如果所有格式都不起作用,则返回True
:
False
将此应用于您的代码,它看起来像这样:
def is_date(s):
for format in ('%Y-%m-%d', '%Y-%m'):
try:
d = datetime.strptime(s , format)
return True
except ValueError:
pass
return False