这可能是一个重复的问题,但因为我已阅读全部内容 关于它的评论,我不解决我的问题,我不得不再问。
我正在处理一个数据框,其中我有一个具有此外观的列:
print final['fecha_dato'][2]
31 de Enero del 2017
我这样做是为了让它更容易理解:
d = final['fecha_dato'][2]
d = d.replace(' de ','-')
d = d.replace(' del ','-')
我得到了这个输出: '31 -Enero-2017'
我想将其转换为31-01-2017格式,我试试这个以便制作 西班牙语可以理解:
locale.setlocale(locale.LC_ALL, 'en_US')
但它说:不支持的区域设置。
一旦我完成了这个,我想我将不得不做这样的事情:
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
让我们看看问题是什么。如果你能给我一个使用替换的方法 用一句也很棒。 在此先感谢!!
答案 0 :(得分: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'))
<强>输出强>
2017-01-31
如果要输出包含日期和/或月份名称的日期,则需要分两个阶段进行,以便切换区域设置。
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
答案 1 :(得分:2)
您可能在Windows上,区域设置代码不同。首先解析语言环境,以便使用适当的代码正确读取日期字符串:
import locale
locale.setlocale(locale.LC_ALL, 'esp_esp')
然后,正如您猜测的那样,您使用strptime
解析字符串以获取日期对象,然后使用strftime
所需的格式将其转换回字符串:
from datetime import datetime as dt
date = dt.strptime('31 de Enero del 2017', '%d de %B del %Y')
date_str = date.strftime('%Y-%m-%d')