我正在尝试使用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 菜鸟的帮助。
表示
dtstart
和 dtend
的对象具有属性 dt
,其中包含标准 datetime.datetime
对象。
start = event.get('dtstart')
print(start.dt)
有点晚了,但如果有帮助的话: API 已更新(我犯了同样的错误 // 复制粘贴另一篇 stackoverflow 帖子),您需要使用decoded() 方法而不是 get()
您可以在这里找到icalendar的最新API参考:http://icalendar.readthedocs.io/en/latest/api.html
将您的呼叫替换为通过解码获取:
date = event.decoded('dtstart')
summery = event.decoded('summary')
应该可以。
从官方文档您可以像这样访问
dtstart
和dtend
的值-
date = event.get('dtstart')
print date.to_ical()
它们是
icalendar.prop.vDDDTypes
物体。看起来 string 和它们都没有直观的 __str__()
方法。因此你得到了这个输出。
请阅读文档。