当我运行以下脚本时
import matplotlib.pyplot as plt
import datetime as dt
date = dt.datetime.strptime('02-Jan-2008 10:09:00', '%d-%b-%Y %H:%M:%S')
print(date)
fig = plt.figure()
date2 = dt.datetime.strptime('02-Jan-2008 10:09:00', '%d-%b-%Y %H:%M:%S')
print(date2)
在我的 anaconda python 3.8.13 中,我收到以下消息
2008-01-02 10:09:00 回溯(最近一次调用最后一次): 文件“./prova.py”,第 17 行,位于 date2 = dt.datetime.strptime('02-Jan-2008 10:09:00', '%d-%b-%Y %H:%M:%S') 文件“/home/grieco/anaconda3/lib/python3.8/_strptime.py”,第 568 行,在 _strptime_datetime 中 tt,分数,gmtoff_fraction = _strptime(data_string,格式) 文件“/home/grieco/anaconda3/lib/python3.8/_strptime.py”,第 349 行,在 _strptime 中 raise ValueError("时间数据 %r 与格式 %r 不匹配" % ValueError:时间数据“02-Jan-2008 10:09:00”与格式“%d-%b-%Y %H:%M:%S”不匹配
注意 date 和 date2 是完全相同的命令。由于我不知道的原因,当我调用命令
plt.figure()
时,日期解码过程会切换到西班牙语(我的 ubuntu 安装的语言)。即使我关闭该图,问题仍然存在。我还没有找到控制它的方法。你能帮我吗?
我期望相同的输出,但我收到错误
您可以使用模块
locale
在代码中更改它
import locale
import datetime
print('current:', locale.setlocale(locale.LC_ALL))
print( datetime.datetime.today().strftime('%d-%b-%Y %H:%M:%S') )
print('new:', locale.setlocale(locale.LC_ALL, 'en_GB.utf-8'))
print(datetime.datetime.today().strftime('%d-%b-%Y %H:%M:%S') )
在
Linux
上,您可以使用 locale -a
查看所有允许的值。en_GB.UTF-8
那么您可能需要在系统中安装它。
顺便说一句:
某些程序允许在执行代码之前直接设置值(即在
ls
之前)
LANG=gb_GB.UTF-8 ls -al
LANG=pl_PL.UTF-8 ls -al
如果您已安装,第二行会以波兰语显示
ls
。
您还可以使用
C
(用于编程语言 C
),这对于按不同顺序对元素进行排序非常有用。
LANG=C ls -al
谢谢弗拉斯。问题解决了,但是…… 如果我输入代码行
locale.setlocale(locale.LC_ALL, 'en_GB.utf-8')
在我打电话之前
plt.figure()
本次调用后,设置返回到上一个。当您在循环中递归生成图形时,这有点无聊,因为您必须在整个循环期间调用它。 最好的问候