我正在使用python进行抓取,并以文本字符串的形式(例如“ 11月11日”(未提供年份))收集一堆存储在网页上的日期。
我正尝试使用
startdate = '11th November'
datetime.strptime(startdate, '%d %B')
但我认为它不喜欢'th'并且得到
值错误:时间数据“ 11月11日”与格式“%d%B”不匹配
如果我提供一个功能来尝试从我认为的日期中剥离出 th,st,rd,nd ,那么它将从月份中剥离出相同的文本。
是否有更好的方法将其转换为日期格式?
对于我来说,它最终必须采用ISO 8601格式YYYY-MM-DD
这样一来,我就可以将其从scrapy传送到数据库,并从中使用它在JavaScript Google图表的Google Spreadsheet中使用。我之所以这样说是因为,与尝试在python中进行更改相比,可能有更好的地方来进行字符串最新的更改。
(作为第二个问题,我还需要弄清楚如何在日期上加上正确的年份,因为如果它表示1月12日表示2020年1月而不是2019年。这是基于与刮擦运行。即今天的日期。
编辑: 事实证明,该解决方案还需要解决第二个问题。因此,选择该问题的最终答案。如果没有解决该年度的第二期问题,则默认为1900,这是一个问题。
答案 0 :(得分:1)
尝试一下-
import datetime
datetime_obj = datetime.datetime.strptime(re.sub(r"\b([0123]?[0-9])(st|th|nd|rd)\b",r"\1", startdate) + " " + str(datetime.datetime.now().year), "%d %B %Y")