使用icalendar通过Python解析iCal feed

问题描述 投票:0回答:3

我正在尝试使用Python中的icalendar库来解析具有多个事件的提要。

'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 菜鸟的帮助。

python icalendar
3个回答
39
投票

表示

dtstart
dtend
的对象具有属性
dt
,其中包含标准
datetime.datetime
对象。

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

5
投票

有点晚了,但如果有帮助的话: API 已更新(我犯了同样的错误 // 复制粘贴另一篇 stackoverflow 帖子),您需要使用decoded() 方法而不是 get()

您可以在这里找到icalendar的最新API参考:http://icalendar.readthedocs.io/en/latest/api.html

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

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

应该可以。


-4
投票

官方文档您可以像这样访问

dtstart
dtend
的值-

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

它们是

icalendar.prop.vDDDTypes
物体。看起来 string 和它们都没有直观的
__str__()
方法。因此你得到了这个输出。

请阅读文档。

© www.soinside.com 2019 - 2024. All rights reserved.