尝试,除了 ValueError 替换为 None
Try, Except ValueError replaces with None
我有一个函数可以将字符串日期转换为列表列表中值的日期时间。并非所有值都是字符串日期,因此我使用了 try
和 except ValueError
函数。对于不是字符串日期的事情,我什么都不做,但是代码用 None
覆盖了值。
import datetime
def parse_date(datestamp):
try:
return datetime.datetime.strptime(str(datestamp)[:10], '%Y-%m-%d')
except ValueError:
pass
My_List = [['ID1', '2015-1-12'], ['ID2', '2015-12-12']]
My_List = [[parse_date(x) for x in i] for i in My_List]
print My_List
期望的输出:
[[ID1, datetime.datetime(2015, 1, 12, 0, 0)], [ID2, datetime.datetime(2015, 12, 12, 0, 0)]]
这是因为 parse_date()
在函数结束时 returning None,并且您正在将元素设置为此值。相反,return 值不变:
def parse_date(datestamp):
try:
return datetime.datetime.strptime(str(datestamp)[:10], '%Y-%m-%d')
except ValueError:
return datestamp
你需要 return datestamp
在加注 ValueError
之后,你的函数 return None
if ValueError
加注 :
>>> def parse_date(datestamp):
... try:
... return datetime.datetime.strptime(str(datestamp)[:10], '%Y-%m-%d')
... except ValueError:
... return datestamp
...
>>> My_List = [['ID1', '2015-1-12'], ['ID2', '2015-12-12']]
>>> My_List = [[parse_date(x) for x in i] for i in My_List]
>>> print My_List
[['ID1', datetime.datetime(2015, 1, 12, 0, 0)], ['ID2', datetime.datetime(2015, 12, 12, 0, 0)]]
我有一个函数可以将字符串日期转换为列表列表中值的日期时间。并非所有值都是字符串日期,因此我使用了 try
和 except ValueError
函数。对于不是字符串日期的事情,我什么都不做,但是代码用 None
覆盖了值。
import datetime
def parse_date(datestamp):
try:
return datetime.datetime.strptime(str(datestamp)[:10], '%Y-%m-%d')
except ValueError:
pass
My_List = [['ID1', '2015-1-12'], ['ID2', '2015-12-12']]
My_List = [[parse_date(x) for x in i] for i in My_List]
print My_List
期望的输出:
[[ID1, datetime.datetime(2015, 1, 12, 0, 0)], [ID2, datetime.datetime(2015, 12, 12, 0, 0)]]
这是因为 parse_date()
在函数结束时 returning None,并且您正在将元素设置为此值。相反,return 值不变:
def parse_date(datestamp):
try:
return datetime.datetime.strptime(str(datestamp)[:10], '%Y-%m-%d')
except ValueError:
return datestamp
你需要 return datestamp
在加注 ValueError
之后,你的函数 return None
if ValueError
加注 :
>>> def parse_date(datestamp):
... try:
... return datetime.datetime.strptime(str(datestamp)[:10], '%Y-%m-%d')
... except ValueError:
... return datestamp
...
>>> My_List = [['ID1', '2015-1-12'], ['ID2', '2015-12-12']]
>>> My_List = [[parse_date(x) for x in i] for i in My_List]
>>> print My_List
[['ID1', datetime.datetime(2015, 1, 12, 0, 0)], ['ID2', datetime.datetime(2015, 12, 12, 0, 0)]]