Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将日期和时间从临时文本转换为日期时间格式_Python_Date_Datetime_Time_Scrapy - Fatal编程技术网

Python 将日期和时间从临时文本转换为日期时间格式

Python 将日期和时间从临时文本转换为日期时间格式,python,date,datetime,time,scrapy,Python,Date,Datetime,Time,Scrapy,我正在使用Python和Scrapy制作一个新闻聚合器,但我找不到确切的答案 我正在从一篇文章中抓取一行文字,一个发布时间,就像这样: item['published'] = hxs.select('//div[@class="date"]/text()').extract() 这就是我得到的(网站上没有ISO日期,因为我正在为这个项目删除其他一些日期): 我需要将这些日期和时间转换成一种格式,我还可以转换其他来源的发布时间,这样我就可以在以后通过JSON提要中的那个键按时间顺序对它们进行排序

我正在使用Python和Scrapy制作一个新闻聚合器,但我找不到确切的答案

我正在从一篇文章中抓取一行文字,一个发布时间,就像这样:

item['published'] = hxs.select('//div[@class="date"]/text()').extract()
这就是我得到的(网站上没有ISO日期,因为我正在为这个项目删除其他一些日期):

我需要将这些日期和时间转换成一种格式,我还可以转换其他来源的发布时间,这样我就可以在以后通过JSON提要中的那个键按时间顺序对它们进行排序

那么,对于这种格式的日期,如何将其转换为可用的形式呢?最后,我希望将所有ISO日期和那些写出的文本格式转换为如下内容:

Published: 2:15 p.m., March 15, 2014.

我想您应该使用
dateutil.parser.parse
。给你。它处理各种格式。在debian风格的操作系统上,它在python dateutil包中提供


如果此答案不能完全回答您的问题,请发表评论,我将尝试对其进行适当更新。

我认为您需要使用
dateutil.parser.parse
。给你。它处理各种格式。在debian风格的操作系统上,它在python dateutil包中提供


如果此答案不能完全回答您的问题,请发表评论,我将尝试对其进行适当更新。

我认为您需要使用
dateutil.parser.parse
。给你。它处理各种格式。在debian风格的操作系统上,它在python dateutil包中提供


如果此答案不能完全回答您的问题,请发表评论,我将尝试对其进行适当更新。

我认为您需要使用
dateutil.parser.parse
。给你。它处理各种格式。在debian风格的操作系统上,它在python dateutil包中提供


如果这个答案不能完全回答您的问题,请发表评论,我会尝试对其进行适当的更新。

编辑:上面jrennie的解决方案比我的更干净

这很有效。我使用它是为了得到一个解决方案。注意,由于原始字符串中没有hh:mm数据,因此我无法像您在示例中那样输出任何hh:mm数据

逐步解决方案:

>>> import time
>>> t = "Last Updated: Tuesday, March 11, 2014"
>>> t = t.rsplit(' ',4)[1:5] # Get a list of the relevant date fields
['Tuesday,', 'March', '11,', '2014']
>>> t = ' '.join(t) # Turn t into a string so we can use strptime
'Tuesday, March 11, 2014'
>>> t = time.strptime(t, "%A, %B %d, %Y") # Use strptime
time.struct_time(tm_year=2014, tm_mon=3, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=70, tm_isdst=-1)
一艘班轮:

import time

t = "Last Updated: Tuesday, March 11, 2014"
time.strptime(' '.join(t.rsplit(' ',4)[1:5]), "%A, %B %d, %Y")

这将产生一个结构时间。你可能最终想要,这取决于你希望如何操作它们。

编辑:上面jrennie的解决方案比我的要干净得多

这很有效。我使用它是为了得到一个解决方案。注意,由于原始字符串中没有hh:mm数据,因此我无法像您在示例中那样输出任何hh:mm数据

逐步解决方案:

>>> import time
>>> t = "Last Updated: Tuesday, March 11, 2014"
>>> t = t.rsplit(' ',4)[1:5] # Get a list of the relevant date fields
['Tuesday,', 'March', '11,', '2014']
>>> t = ' '.join(t) # Turn t into a string so we can use strptime
'Tuesday, March 11, 2014'
>>> t = time.strptime(t, "%A, %B %d, %Y") # Use strptime
time.struct_time(tm_year=2014, tm_mon=3, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=70, tm_isdst=-1)
一艘班轮:

import time

t = "Last Updated: Tuesday, March 11, 2014"
time.strptime(' '.join(t.rsplit(' ',4)[1:5]), "%A, %B %d, %Y")

这将产生一个结构时间。你可能最终想要,这取决于你希望如何操作它们。

编辑:上面jrennie的解决方案比我的要干净得多

这很有效。我使用它是为了得到一个解决方案。注意,由于原始字符串中没有hh:mm数据,因此我无法像您在示例中那样输出任何hh:mm数据

逐步解决方案:

>>> import time
>>> t = "Last Updated: Tuesday, March 11, 2014"
>>> t = t.rsplit(' ',4)[1:5] # Get a list of the relevant date fields
['Tuesday,', 'March', '11,', '2014']
>>> t = ' '.join(t) # Turn t into a string so we can use strptime
'Tuesday, March 11, 2014'
>>> t = time.strptime(t, "%A, %B %d, %Y") # Use strptime
time.struct_time(tm_year=2014, tm_mon=3, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=70, tm_isdst=-1)
一艘班轮:

import time

t = "Last Updated: Tuesday, March 11, 2014"
time.strptime(' '.join(t.rsplit(' ',4)[1:5]), "%A, %B %d, %Y")

这将产生一个结构时间。你可能最终想要,这取决于你希望如何操作它们。

编辑:上面jrennie的解决方案比我的要干净得多

这很有效。我使用它是为了得到一个解决方案。注意,由于原始字符串中没有hh:mm数据,因此我无法像您在示例中那样输出任何hh:mm数据

逐步解决方案:

>>> import time
>>> t = "Last Updated: Tuesday, March 11, 2014"
>>> t = t.rsplit(' ',4)[1:5] # Get a list of the relevant date fields
['Tuesday,', 'March', '11,', '2014']
>>> t = ' '.join(t) # Turn t into a string so we can use strptime
'Tuesday, March 11, 2014'
>>> t = time.strptime(t, "%A, %B %d, %Y") # Use strptime
time.struct_time(tm_year=2014, tm_mon=3, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=70, tm_isdst=-1)
一艘班轮:

import time

t = "Last Updated: Tuesday, March 11, 2014"
time.strptime(' '.join(t.rsplit(' ',4)[1:5]), "%A, %B %d, %Y")

这将产生一个结构时间。你可能最终想要,取决于您希望如何操作它们。

今天一个好方法是使用scrapy团队的dateparser项目:

今天一个好方法是使用scrapy团队的dateparser项目:

今天一个好方法是使用scrapy团队的dateparser项目:

今天一个好方法即使用scrapy团队的dateparser项目: