python将字符串转换为datetime
发布时间:2020-12-20 11:16:29 所属栏目:Python 来源:网络整理
导读:我有一个循环,我尝试处理数据集,其中一个操作是将普通字符串转换为日期时间.一切都很好,除了有时发生一个奇怪的事情……这就是我所知道的 总是有完全相同的参数进入函数 那些参数始终是相同的类型 我第一次运行它,它总是会受到影响 当它到达appx循环中的第二
我有一个循环,我尝试处理数据集,其中一个操作是将普通字符串转换为日期时间.一切都很好,除了有时发生一个奇怪的事情……这就是我所知道的
>总是有完全相同的参数进入函数 因为我的功能很大而且有很多东西在讨价还价我决定为你提供一些我在这里写的saple代码,只是为了澄清: data = ['January 20 1999','March 4 2010','June 11 1819'] dformat = '%B %d %Y' for item in data: out = datetime.datetime.strptime(item,dformat) print out 虽然这显然适用于我的程序,但它没有…我已经尝试了我想出的所有内容但尚未成功,因此我很高兴有任何想法,你提供谢谢 顺便说一句:我总是看到这样的错误 ValueError: time data did not match format: data=March 4 2010 fmt=%B %d %Y 解决方法
您可能设置了不同的区域设置. %B是使用英语的语言环境中的March,但在其他语言环境中它将失败.
例如: >>> import locale >>> locale.setlocale(locale.LC_ALL,'sv_SE.utf8') 'sv_SE.utf8' >>> import datetime >>> >>> data = ['January 20 1999','June 11 1819'] >>> for item in data: ... print datetime.datetime.strptime(item,'%B %d %Y') ... Traceback (most recent call last): File "<stdin>",line 2,in <module> File "/usr/lib/python2.6/_strptime.py",line 325,in _strptime (data_string,format)) ValueError: time data 'January 20 1999' does not match format '%B %d %Y' 在这里你看到即使格式匹配,它声称它没有.那是因为月份名称不匹配.将其更改为瑞典语区域设置名称,它再次起作用: >>> import locale >>> locale.setlocale(locale.LC_ALL,'sv_SE.utf8') 'sv_SE.utf8' >>> import datetime >>> >>> data = ['Januari 20 1999','Mars 4 2010','Juni 11 1819'] >>> for item in data: ... print datetime.datetime.strptime(item,'%B %d %Y') ... 1999-01-20 00:00:00 2010-03-04 00:00:00 1819-06-11 00:00:00 (请注意,上述语言环境’sv_SE.utf8’可能不适合您,因为您必须安装该特定语言环境.要查看Unix计算机上安装的语言环境,请从命令行运行以下命令: $locale -a C en_AG en_AU.utf8 en_BW.utf8 en_CA.utf8 en_DK.utf8 en_GB.utf8 en_HK.utf8 en_IE.utf8 en_IN en_NG en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 en_ZA.utf8 en_ZW.utf8 POSIX sv_FI.utf8 sv_SE.utf8 ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |