以 python 中的特定格式解析日期
Parse date with specific format in python
您将如何解析 python 中的日期:
Monday, April 1st
我试过了
datetime_object = datetime.strptime(date.replace("st","").replace("rd","").replace("th","").replace("nd","").strip(), '%A, %B %d')
但显然它会从 "Monday" 中删除 "nd" 并导致异常
谢谢
不替换。使用 str.rstrip
从右边开始剥离。如果不需要的字符不存在,则按原样返回字符串:
>>> from datetime import datetime
>>> s = "Monday, April 1st"
>>> datetime.strptime(s.rstrip('strndh'), '%A, %B %d')
datetime.datetime(1900, 4, 1, 0, 0)
请注意,此处的日期信息(即星期一)是多余的。
此外,如果您的所有字符串的长度都不相同:
a = "Monday, April 1st"
if not a[-1].isdigit():
a = a[:-2]
datetime_object = datetime.strptime(a, '%A, %B %d')
您可以使用 dateutil
模块 (pip install py-dateutil
):
>>> from dateutil import parser
>>> parser.parse("Monday, April 1st")
datetime.datetime(2017, 4, 1, 0, 0)
您将如何解析 python 中的日期:
Monday, April 1st
我试过了
datetime_object = datetime.strptime(date.replace("st","").replace("rd","").replace("th","").replace("nd","").strip(), '%A, %B %d')
但显然它会从 "Monday" 中删除 "nd" 并导致异常
谢谢
不替换。使用 str.rstrip
从右边开始剥离。如果不需要的字符不存在,则按原样返回字符串:
>>> from datetime import datetime
>>> s = "Monday, April 1st"
>>> datetime.strptime(s.rstrip('strndh'), '%A, %B %d')
datetime.datetime(1900, 4, 1, 0, 0)
请注意,此处的日期信息(即星期一)是多余的。
此外,如果您的所有字符串的长度都不相同:
a = "Monday, April 1st"
if not a[-1].isdigit():
a = a[:-2]
datetime_object = datetime.strptime(a, '%A, %B %d')
您可以使用 dateutil
模块 (pip install py-dateutil
):
>>> from dateutil import parser
>>> parser.parse("Monday, April 1st")
datetime.datetime(2017, 4, 1, 0, 0)