Как определить функцию, которая распознает мой формат даты в Python - PullRequest
2 голосов
/ 11 июля 2019

Я хочу создать функцию или цикл с условным условием: если эта строка соответствует этому формату, это дата, поэтому верните True, в противном случае верните False.

Я уже пробовал это с этим кодом, но когда я запускаю is_date (string), он возвращает False и должен возвращать True.

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

Ответы [ 4 ]

2 голосов
/ 11 июля 2019

Так как вы помечаете 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
2 голосов
/ 11 июля 2019

вам не нужны панды, чтобы сделать это:)

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')
2 голосов
/ 11 июля 2019

Попробуйте проверить, если длина равна восьми и строка содержит только цифры:

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))

Это решение даст False на 00000000, но не первое решение:

Оба вывода:

True
1 голос
/ 11 июля 2019

Вот функция, которая будет возвращать true только если строка в этом конкретном формате: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...