解析日期并从西班牙语更改格式

2021-05-13 15:05:56 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是一个重复的问题,但因为我已经读了所有 关于它的评论,我没有解决我的问题,我不得不再问一次。在

我正在处理一个数据帧,其中有一个列具有以下外观:

print final['fecha_dato'][2]

2017年12月31日

我这样做是为了让大家更容易理解:

^{pr2}$

我得到这个输出: '31-Enero-2017年'

我想把它转换成2017年1月31日的格式,我试着把它变成 西班牙语可以理解:

locale.setlocale(locale.LC_ALL, 'en_US')

但上面写着:不支持区域设置。在

一旦我做了这件事,我想我必须做这样的事情:

datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')

让我们看看是什么问题。如果你能给我一个使用替代品的方法 只要一句话,那就太好了。 提前谢谢!!在

2条回答
网友
1楼 ·

您可能在Windows上,这里的语言环境代码不同。首先,分析区域设置,以便使用适当的代码正确读取日期字符串:

import locale
locale.setlocale(locale.LC_ALL, 'esp_esp')

然后,正如您所猜测的那样,使用strptime解析字符串以获得日期对象,然后使用strftime将其转换回所需格式的字符串:

^{pr2}$
网友
2楼 ·

您可以在一行中完成此操作,因为您的输出日期格式是纯数字的,假设您的操作系统语言环境数据库设置正确。在

from datetime import datetime
import locale 

locale.setlocale(locale.LC_ALL, 'es_ES.utf8')

print(datetime.strptime('31 de Enero del 2017', '%d de %B del %Y').strftime('%Y-%m-%d'))

输出

^{pr2}$

如果要输出包含日期和月份名称的日期,则需要分两个阶段进行输出,以便可以切换区域设置。在

from datetime import datetime
import locale 

locale.setlocale(locale.LC_ALL, 'es_ES.utf8')
s = '31 de Enero del 2017'
d = datetime.strptime(s, '%d de %B del %Y')

locale.setlocale(locale.LC_ALL, 'en_US.utf8')
print(d.strftime('%A, %B %d %Y'))        

输出

Tuesday, January 31 2017

相关问题