python 将格式为“11th November”的字符串转换为日期的方法
python method to convert string in format "11th November" into a date
我在 scrapy 中使用 python 并收集了一堆日期,这些日期以文本字符串的形式存储在网页上,例如“11 月 11 日”(未提供年份)。
我正在尝试使用
startdate = '11th November'
datetime.strptime(startdate, '%d %B')
但我认为它不喜欢 'th',我得到了
Value error: time data '11th November' does not match format '%d %B'
如果我创建一个函数来尝试从日期中删除第 、st、rd、nd,我认为它会从月份中删除相同的文本。
是否有更好的方法将其转换为日期格式?
为了我的使用,它最终需要采用 ISO 8601 格式 YYYY-MM-DD
这样我就可以将它从 scrapy 传输到数据库,然后在 Google 电子表格中使用它来制作 javascript Google 图表。我之所以提到这一点,是因为与尝试在 python.
中进行字符串更新相比,可能有更好的地方来进行更改。
(作为次要问题,我还需要弄清楚如何将正确的年份添加到日期,因为如果它说的是 1 月 12 日,那就意味着 2020 年 1 月而不是 2019 年。这将基于与抓取运行的日期。即今天的日期。)
编辑:
事实证明,解决方案还需要解决次要问题。因此选择了这个问题的最终答案。如果当年的次要问题没有得到解决,它默认为 1900,这是一个问题。
试试这个 -
import datetime
datetime_obj = datetime.datetime.strptime(re.sub(r"\b([0123]?[0-9])(st|th|nd|rd)\b",r"", startdate) + " " + str(datetime.datetime.now().year), "%d %B %Y")
我在 scrapy 中使用 python 并收集了一堆日期,这些日期以文本字符串的形式存储在网页上,例如“11 月 11 日”(未提供年份)。
我正在尝试使用
startdate = '11th November'
datetime.strptime(startdate, '%d %B')
但我认为它不喜欢 'th',我得到了
Value error: time data '11th November' does not match format '%d %B'
如果我创建一个函数来尝试从日期中删除第 、st、rd、nd,我认为它会从月份中删除相同的文本。
是否有更好的方法将其转换为日期格式?
为了我的使用,它最终需要采用 ISO 8601 格式 YYYY-MM-DD
这样我就可以将它从 scrapy 传输到数据库,然后在 Google 电子表格中使用它来制作 javascript Google 图表。我之所以提到这一点,是因为与尝试在 python.
中进行字符串更新相比,可能有更好的地方来进行更改。(作为次要问题,我还需要弄清楚如何将正确的年份添加到日期,因为如果它说的是 1 月 12 日,那就意味着 2020 年 1 月而不是 2019 年。这将基于与抓取运行的日期。即今天的日期。)
编辑: 事实证明,解决方案还需要解决次要问题。因此选择了这个问题的最终答案。如果当年的次要问题没有得到解决,它默认为 1900,这是一个问题。
试试这个 -
import datetime
datetime_obj = datetime.datetime.strptime(re.sub(r"\b([0123]?[0-9])(st|th|nd|rd)\b",r"", startdate) + " " + str(datetime.datetime.now().year), "%d %B %Y")