【问题标题】:Error while parsing string to date with dateutil.parser使用 dateutil.parser 将字符串解析为日期时出错
【发布时间】:2016-11-03 11:12:52
【问题描述】:

我在尝试解析迄今为止的字符串时遇到错误。

ValueError: 未知字符串格式

这是我的代码

dateString = "02/11/2016"
 print dateString
 dt = parse(dateString)
 item.date = calendar.timegm(dt.utctimetuple())
 print dt

有趣的是,它在抛出错误之前打印了正确的日期。这是完整的日志

2016 年 2 月 11 日 2016-02-11 00:00:00 艺术。 10、逗号 1、字母 e Traceback (最近一次通话最后):文件“institutional-docs.py”,第 60 行,在 dt = parse(dateString) 文件 "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/dateutil/parser.py", 第 697 行,解析中 返回 DEFAULTPARSER.parse(timestr, **kwargs) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/dateutil/parser.py”, 第 303 行,解析中 raise ValueError, "unknown string format" ValueError: unknown string format

【问题讨论】:

  • 似乎很奇怪它对我有用。您是否从示例中剪切并粘贴了代码?我唯一能想到的是,字符串中可能存在某种类型的隐藏字符。
  • @aquil.abdullah 有没有办法让我检查一下?
  • @aquil.abdullah 我使用的数据来自废弃的数据。我正在转义 unicode 字符。这就是我正在做的忽略他们unicodedata.normalize('NFKD', dateString).encode('ascii','ignore')
  • 查看字符串中是否有任何隐藏字符的最简单方法是记录print repr(dateString)的结果
  • @aquil.abdullah 它的印刷品'2 nov 2016' 。你能告诉我如何删除它们吗?我刚开始使用python

标签: python python-dateutil


【解决方案1】:

使用time有什么问题?

您的问题没有说明您的 parse 函数做了什么,所以不能说这是否以任何奇怪的方式读取字符串。您可能复制并粘贴了错误的引号。

import time
time.strptime("02/11/2016", "%d/%m/%Y")

【讨论】:

  • 我拥有的字符串格式为“2 nov 2016”。不要认为时间可以处理这种转换:/
  • "%d %b %Y" 读取时间模块。你会惊讶于它可以处理多少事情
  • 会试一试。非常感谢
  • 所有代码都列出了docs.python.org/2/library/time.html#time.strftime,您可以定义适合您需要的日期格式。
  • 我认为它的原因是字符串中的一些隐藏字符。我正在使用报废的数据进行转换。可能与它有关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多