【问题标题】:Error message when using strptime (Python) [duplicate]使用 strptime (Python) 时出现错误消息 [重复]
【发布时间】:2015-04-12 19:19:55
【问题描述】:

我在使用strptime 尝试将从网站提取的字符串转换为日期格式时收到错误消息。我必须将提取的文本数据转换为我已经完成的字符串,但我收到一条错误消息:

exceptions.ValueError: time data 'Sat 18th Apr 2015' does not match format '%a %d %b'.

我检查了文档,我认为我的参数是正确的。我真的很想将这些信息以YYYY,MM,DD 格式保存到数据库中。

这就是我尝试解决问题的方法

    item ['date'] = info.xpath('.//span[@class="dates"]//text()').extract() # Extract date information.
    convert = ''.join(str(t)for t in item['date'])+" 2015"
    print convert
    time.strptime(convert, "%a %dth %b %Y")

像这样插入数据库...

def process_item(self, item, spider):    
        try:
            self.cursor.execute("INSERT INTO info (venue, datez, dateForm, link, genre) VALUES (%s, %s, %s, %s, %s)", (item['artist'][0], item['date'][0], item['dateForm'][0], item['trackz'], "clubbing"))        
            self.conn.commit()
        except MySQLdb.Error, e:
            print "Error %d: %s" % (e.args[0], e.args[1])

            return item

【问题讨论】:

  • %d 不支持序数,去掉那里的th
  • 年份从何而来?
  • 抱歉,忘记写年份了...
  • 关于摆脱序数的任何提示?
  • 另外,有没有办法让它忽略“星期六”?

标签: python mysql scrapy strptime


【解决方案1】:

你不需要redateutil只需要rstrip拆分后的字母:

from datetime import datetime

a, b, c = item["date"][0].split()

print(datetime.strptime("{} {} {} {}".format(a,b.rstrip("ndthstr"),c,"2015"),"%a %d %b %Y").strftime("%Y,%m,%d"))

2015,04,18

【讨论】:

  • 我已经编辑了问题以显示我是如何获取数据的...可能需要不同的方法?谢谢你的暂停帕德莱克
  • @DanielParkin,试试''.join(t.rstrip("thrdstn") if t[0].isdigit() else t for t in item['date']) 这将去掉第、第、第等。假设每个t 是单独的字符串。元素还不是字符串吗?
  • 仍然收到错误消息。这对我来说似乎很奇怪......'exceptions.ValueError:时间数据'Sat 18th Apr 2015'与格式'%a %d %b %Y'不匹配。'
  • 你能打印项目 [日期] 并告诉我它的样子吗?
  • 项目日期是错误消息中打印的不带“2015”的日期。确切地说,'[u'Sat 18th Apr']' 是它在终端中的显示方式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 2020-10-13
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多