如何在 python 中定义识别我的日期格式的函数

How to define a function that recognizes my date format in python

我想创建一个带有条件的函数或循环:如果此字符串遵循此格式是日期,则 return 为真,否则 return 为假。

我已经用这段代码试过了,但是当我 运行 is_date(string) 它 returns False,它应该 return True。

string = '20090903'
def is_date(string):
    if string.format == "%YYYY%mm%dd":
        return True
    else:
        return False
is_date(string)

尝试检查长度是否为 8 且字符串是否仅包含数字:

string = '20090903'
def is_date(string):
    return len(string) == 8 and string.isdigit()
print(is_date(string))

更精确的解决方案:

string = '20090903'
from dateutil.parser import parse 
def is_date(string):
    try:
        parse(string)
        return True
    except:
        return False
print(is_date(string))

此解决方案将在 00000000 上给出 False,但不是第一个解决方案:

两个输出:

True

自从您标记 pandas

string = '20090903'
from pandas.core.tools.datetimes import _guess_datetime_format_for_array

def is_date(string):
    return _guess_datetime_format_for_array(np.array([string ])) == '%Y%m%d'

is_date(string)

更多测试

is_date('20190101')
Out[77]: True
is_date('00000000')
Out[78]: False

你不需要 pandas 来做:)

from datetime import datetime
def test(your_text):
    try:
        datetime.strptime(your_text, '%Y%m%d')
        print('valid format')
        return True
    except ValueError:
        return False

if __name__=='__main__':
    test('20090903')

这是一个函数,只有当字符串采用特定格式时才会 return 为真: