Funkcja uzyskiwania datetime z ciągu znaków, datetime.strptime(date_string, format)
wymaga formatu ciągu jako drugiego argumentu. Czy istnieje sposób na zbudowanie datetime z ciągów bez znajomości dokładnego formatu, a Python najlepiej to odgadnąć?datetime z ciągu w Pythonie, najlepiej zgadujący format ciągu znaków
Odpowiedz
Wcześniej, zanim zostałem Pythonem, byłem perlem. Jedną z rzeczy, które zawsze mi brakowało, ale nie widziałem nic w pobliżu, jest Date::Manip. Moduł ten może wyodrębnić dobry znacznik czasu ze smużenia przekąsek. Prawie podejrzewam, że to autor zawarł umowę z Diabłem.
Mam natknąć się na kilka rzeczy, które mają pchnięć na to w Pythonie:
- normaldate
- mxDateTime
- roundup „s data Moduł ma kilka wentylatorów
Jeśli znajdź coś lepszego, ale chciałbym o tym usłyszeć.
Dzięki za rekomendacje- zobacz moją odpowiedź, Myślę, że znalazłem własną odpowiedź z biblioteką [dateutil] (http://pypi.python.org/pypi/python-dateutil/1.5). – Yarin
Użyj biblioteki dateutil.
byłem już przy użyciu dateutil jako niezbędny lib do obsługi stref czasowych
(Patrz Convert UTC datetime string to local datetime i How do I convert local time to UTC in Python?)
A ja po prostu sobie sprawę, że ma wsparcie data parsowania:
import dateutil.parser
yourdate = dateutil.parser.parse(datestring)
(Zobacz również How do I translate a ISO 8601 datetime string into a Python datetime object?)
Może odejść z prostą funkcją, jeśli tylko sprawdza daty.
def get_date(s_date):
date_patterns = ["%d-%m-%Y", "%Y-%m-%d"]
for pattern in date_patterns:
try:
return datetime.datetime.strptime(s_date, pattern).date()
except:
pass
print "Date is not in expected format: %s" %(s_date)
sys.exit(0)
Znacznie szybciej niż przy użyciu dateutil pod warunkiem, że format daty jest objęty. – rbennell
- 1. Konwersja ciągu znaków w formacie ddMyyyy na format DateTime
- 2. Wyrównanie formatu ciągu Datetime
- 3. Domyślny format ciągu datetime ze strefą czasową
- 4. format ciągu znaków w języku C#
- 5. Jak utworzyć obiekt DateTime z ciągu znaków w symfony2/php
- 6. Usuwanie znaków z ciągu znaków
- 7. Jak rozwinąć ciąg znaków w ciągu znaków w pythonie?
- 8. Przetwarzanie ciągu DateTime
- 9. Sprawdzanie znaków specjalnych w ciągu znaków
- 10. pandas.to_datetime niespójny format ciągu czasu
- 11. Get typ danych przechowywanych w ciągu znaków w Pythonie
- 12. Jak uzyskać wartości całkowite z ciągu znaków w Pythonie?
- 13. Pisanie ciągu znaków (z nowymi wierszami) w Pythonie
- 14. Usuwanie białych znaków w ciągu znaków XML
- 15. Jak uzyskać określony format ciągu znaków (wzór) w java?
- 16. Parsowanie ciągu znaków ISO 8601 do DateTime w .NET?
- 17. Prawda dla wszystkich znaków ciągu
- 18. Usuwanie spacji z ciągu znaków
- 19. Zwracanie ciągu znaków z NSURLRequest
- 20. Parsować krotkę z ciągu znaków?
- 21. Format ciągu daty WPF w XAML
- 22. Usunąć pierwsze słowo w ciągu znaków w Pythonie?
- 23. Usuń HTML z ciągu znaków
- 24. Ścieżki do plików w Pythonie w postaci błędów ciągu znaków
- 25. Jak znaleźć jedną liczbę w ciągu znaków w Pythonie?
- 26. typeof: jak uzyskać typ z ciągu znaków
- 27. Usuwanie znaków niealfanumerycznych z ciągu znaków
- 28. Usuwanie określonych znaków z ciągu znaków
- 29. Dynamicznie obliczane wyrównywanie zera w ciągu znaków w pythonie
- 30. Usuwanie wielu typów znaków z ciągu znaków
możliwe duplikat [Czy istnieje biblioteka Pythona do parsowania daty i godziny z języka naturalnego?] (Http://stackoverflow.com/questions/1495487/is-there-any-python-library-for -parsing-date-and-times-from-a-natural-language) –
Rozróżnianie pomiędzy mm/dd/rrrr a dd/mm/rrrr jest interesującym problemem, z katastrofalnymi skutkami, jeśli źle zrobisz. –
Zależy od tego, jak niedokładnie masz na myśli, kiedy mówisz "bez dokładnego formatu". Czy możesz podać przykłady rodzajów wejść, które chcesz obsłużyć? Lub, czy możesz potencjalnie uzyskać częściowe informacje o formacie (np. Czy rok ma 2 lub 4 cyfry, czy też miesiąc poprzedza dzień, czy odwrotnie)? Bez przynajmniej podstawowych informacji, nawet osoba nie może zrobić tego, o co prosisz. Czy 01.02.12 lutego 1 lutego 2012, 2 stycznia 2012, 12 lutego 2001, 2 grudnia 2001, czy coś innego? –