使用icalendar使用Python解析iCal feed

时间:2014-01-05 18:59:55

标签: python icalendar

我正在尝试使用python中的icalendar lib解析包含多个事件的feed。

'summary','description'等工作正常,但对于'dtstart'和'dtend',它会让我回头: icalendar.prop.vDDDTypes object at 0x101be62d0

def calTest():
    req = urllib2.Request('https://www.google.com/calendar/ical/XXXXXXXXXX/basic.ics')
    response = urllib2.urlopen(req)
    data = response.read()

    cal = Calendar.from_ical(data)

    for event in cal.walk('vevent'):

        date = event.get('dtstart')
        summery = event.get('summary')

        print str(date)
        print str(summery)

    return

我做错了什么? 要使用vobject不是一个选项,必须使用icalendar lib。 非常感谢python新秀的任何帮助。

3 个答案:

答案 0 :(得分:22)

代表dtstartdtend的对象具有属性dt,其中包含标准datetime.datetime对象。

start = event.get('dtstart')
print(start.dt)

答案 1 :(得分:2)

从您应该阅读的official documentation开始,您可以像这样访问dtstartdtend的值 -

date = event.get('dtstart')
print date.to_ical()

他们是icalendar.prop.vDDDTypes个对象。似乎没有字符串,也没有直观的__str__()方法。因此你得到了那个输出。

请阅读文档。

答案 2 :(得分:2)

这里有点晚了,但如果这有帮助: API已经更新(我做了同样的错误//复制粘贴另一个stackoverflow帖子)你需要使用方法decode()而不是get()

您可以在此处找到icalendar的最新API参考:Powershell Console

将您的通话替换为通过解码获取:

date = event.decoded('dtstart')
summery = event.decoded('summary')

它应该工作。