La función para obtener una fecha y hora de una cadena, datetime.strptime(date_string, format)
requiere un formato de cadena como segundo argumento. ¿Hay alguna forma de construir un datetime a partir de una cadena sin sin saber el formato exacto, y teniendo Python mejor adivinarlo?datetime from cadena en Python, formato de cadena mejor adivinación
Respuesta
Antes de que yo fuera un tipo pitón, era un tipo perl. Una de las cosas que siempre me he perdido, pero no he visto nada parecido es Date::Manip. Ese módulo puede extraer una buena marca de tiempo de un puñado de mordiscos. Casi sospecho que su autor llegó a un acuerdo con el Diablo.
me he encontrado a través de un par de cosas que se llevan a puñaladas en ella en Python:
- normaldate
- mxDateTime
- roundup 's módulo de la fecha tiene algunos fans
Si sin embargo, encontraré algo mejor, me encantaría saber de eso.
Gracias por las recomendaciones. Consulte mi respuesta, Creo que encontré mi propia respuesta con la biblioteca [dateutil] (http://pypi.python.org/pypi/python-dateutil/1.5). – Yarin
Utilice la biblioteca dateutil.
Yo ya estaba usando dateutil como un lib indispensable para el manejo de las zonas horarias
(Ver Convert UTC datetime string to local datetime y How do I convert local time to UTC in Python?)
Y yo sólo he dado cuenta de que tiene soporte fecha de análisis:
import dateutil.parser
yourdate = dateutil.parser.parse(datestring)
(Ver también How do I translate a ISO 8601 datetime string into a Python datetime object?)
Puede salirse con la suya con una simple función si solo se compara con las fechas.
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)
Mucho más rápido que usar dateutil, siempre que su formato de fecha esté cubierto. – rbennell
- 1. Entrena el formato de cadena utilizado para el formato DateTime
- 2. cadena de DateTime objeto
- 3. Conversión de una cadena en formato ddMMyyyy a DateTime
- 4. Cadena de formato en python con formato variable
- 5. formato Linq 2 SQL DateTime a cadena aaaa-MM-dd
- 6. Formato de cadena condicional de Python
- 7. cadena de Python formato cuando cadena contiene "% s" sin escapar
- 8. analizar la cadena de DateTime en C#
- 9. Cadena de formato dinámicamente
- 10. Formato de cadena de Python demasiado lento
- 11. formato de cadena NodeJS como Python?
- 12. Convierte esta cadena para datetime
- 13. Seleccionar tabla (FROM) por cadena
- 14. Convierte cadena a datetime
- 15. Formato de cadena parcial en formateadores de registro de Python
- 16. python: ¿diccionario a cadena, formato personalizado? Sólo
- 17. cadena a la conversión DateTime en C#
- 18. la conversión de una cadena a una cadena con formato de fecha y hora usando Python
- 19. java formato decimal cadena
- 20. Cómo cadena de formato cláusula IN de SQL con Python
- 21. formato de cadena en C#
- 22. Formato de cadena en MySQL
- 23. Registro idiomático de Python: formato de cadena + lista de args vs. formato de cadena en línea - ¿cuál es el preferido?
- 24. pitón, cadena de formato
- 25. cadena con formato de ArrayList
- 26. Conversión de tipo genérico FROM cadena
- 27. Ordenando números en formato de cadena con Python
- 28. Convertir DateTime Valor en cadena en MySQL
- 29. de formato de cadena en notación científica
- 30. Formato datetime timezone
posible duplicado de [¿Hay alguna biblioteca de Python para analizar las fechas y horas de un lenguaje natural?] (Http://stackoverflow.com/questions/1495487/is-there-any-python-library-for -parsing-dates-and-times-from-a-natural-language) –
Diferenciar entre mm/dd/aaaa vs. dd/mm/aaaa es un problema interesante, con resultados desastrosos si lo haces mal. –
Depende de lo inexacto que sea cuando diga "sin el formato exacto". ¿Podría dar ejemplos de los tipos de entradas que desea ser capaz de manejar? O bien, ¿podría tener información parcial sobre el formato (por ejemplo, si el año tiene 2 o 4 dígitos o si el mes precede al día o viceversa)? Sin al menos alguna información básica, incluso una persona no puede hacer lo que pide. ¿Es 01/02/12 1 de febrero de 2012, 2 de enero de 2012, 12 de febrero de 2001, 2 de diciembre de 2001, o alguna otra cosa? –