使用Python解析iCal数据源,使用icalendar

2024-05-20 02:31:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图使用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 its not a option,必须使用icalendar库。 非常感谢你对一个python新手的帮助。


Tags: eventdatagetdateresponseurllib2summaryreq
3条回答

有点晚了,但如果有帮助的话: API已经更新,因为(我犯了同样的错误//copy粘贴了另一个stackoverflow post)需要使用decoded()方法而不是get()方法

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

通过解码替换您的呼叫:

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

它应该有用。

表示dtstartdtend的对象具有包含标准datetime.datetime对象的属性dt

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

从应该读取的official documentation中,可以像这样访问dtstartdtend的值-

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

它们是icalendar.prop.vDDDTypes对象。似乎,字符串和它们都没有直观的__str__()方法。所以你得到了输出。

请阅读文档。

相关问题 更多 >