python - 转换字符串日期,不能用零填充

标签 python string python-3.x datetime strptime

我从非常规来源获取我的数据和一些日期,因此字符串日期存在一些细微差异。最大的区别是有些日期混合在一起,其中一天没有用零填充,一天之后可以有一个空格(在日期 2/9/2018 的情况下),月份也没有用零填充。我在尝试 datetime.strptime 时收到“时间数据与格式‘%m %d %Y’不匹配”的错误。如何转换存在这样细微差异的日期列?请查看代码和示例数据下面

d_o = datetime.datetime.strptime(df['start'][1], '%m %d %Y')
  • 2018/1/26
  • 2018/1/26
  • 2/2/2018
  • 2/2/2018
  • 2/9/2018
  • 2/9/2018
  • 2018 年 1 月 19 日
  • 2018 年 1 月 19 日
  • 2018/1/26
  • 2018/1/26
  • 2/2/2018
  • 2/2/2018
  • 2/9/2018

最佳答案

您应该使用第 3 方库,例如 dateutil .该库以牺牲性能为代价接受各种日期格式。

from dateutil import parser

lst = ['1/26/2018', '1/26/2018', '2/2/2018', '2/2/2018', '2/9 /2018', '2/9 /2018',
       '1/19/2018', '1/19/2018', '1/26/2018', '1/26/2018', '2/2/2018', '2/2/2018',
       '2/9 /2018']

res = [parser.parse(i) for i in lst]

结果:

[datetime.datetime(2018, 1, 26, 0, 0),
 datetime.datetime(2018, 1, 26, 0, 0),
 datetime.datetime(2018, 2, 2, 0, 0),
 datetime.datetime(2018, 2, 2, 0, 0),
 datetime.datetime(2018, 2, 9, 0, 0),
 datetime.datetime(2018, 2, 9, 0, 0),
 datetime.datetime(2018, 1, 19, 0, 0),
 datetime.datetime(2018, 1, 19, 0, 0),
 datetime.datetime(2018, 1, 26, 0, 0),
 datetime.datetime(2018, 1, 26, 0, 0),
 datetime.datetime(2018, 2, 2, 0, 0),
 datetime.datetime(2018, 2, 2, 0, 0),
 datetime.datetime(2018, 2, 9, 0, 0)]

关于python - 转换字符串日期,不能用零填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50412933/

相关文章:

python-3.x - 运行 ibapi 的 EReader 线程中的异常错误

python - 如何使用opencv将轮廓作为图像获取

Python argparse 如何从命令行传递 False?

python - Python 脚本是否可以对自身进行 md5 哈希?

python - 如何使用 numpy.vectorize 或 numpy.frompyfunc

python - 在 SciPy 中生成一个又高又瘦的随机正交矩阵

javascript - 使用 jQuery 查找文本并替换所有匹配的内容

c# - 如何检查 .NET 中的字符串是否为数字?

string - 在字符串中的其他字符之间插入字符的有效方法

python - 当某个应用程序在 Python 中启动时如何触发函数