Próbuję sprawdzić ciąg znaków, który powinien zawierać znacznik czasu w formacie ISO 8601 (zwykle używany w JSON).Jak wymagać, aby znacznik czasu był wyzerowany podczas sprawdzania poprawności w języku Python?
Pythona strptime
wydaje się być bardzo wyrozumiały, jeśli chodzi o sprawdzanie zerami, patrz przykład kodu poniżej (należy pamiętać, że godziny brakuje zero):
>>> import datetime
>>> s = '1985-08-23T3:00:00.000'
>>> datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%S.%f')
datetime.datetime(1985, 8, 23, 3, 0)
ona wdzięcznie przyjmuje ciąg znaków, który nie jest wyzerowane na godzinę, na przykład, i nie wyrzuca wyjątku, tak jak się spodziewałem.
Czy istnieje sposób na wymuszenie działania w celu sprawdzenia, czy jest on zerowy? Czy jest tam jakaś inna wbudowana funkcja w standardowych bibliotekach Pythona, która to robi?
Chciałbym uniknąć napisania do tego własnego regexp
.
Możesz tylko sprawdzić poprawność łańcucha ręcznie: sprawdź, czy '.' jest we właściwej pozycji (' str [19] == '.''): jeśli tak nie jest, to jest problem z zerowym dopełnieniem. – TemporalWolf
Być może nie to konkretne pytanie, ale inne kwestie związane z ISO8601 zostały omówione na SO. Jedno pytanie wymienia https://pypi.python.org/pypi/iso8601, które z kolei wspomina http://labix.org/python-dateutil. –