我正在尝试使用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新秀的任何帮助。
答案 0 :(得分:22)
代表dtstart
和dtend
的对象具有属性dt
,其中包含标准datetime.datetime
对象。
start = event.get('dtstart')
print(start.dt)
答案 1 :(得分:2)
从您应该阅读的official documentation开始,您可以像这样访问dtstart
和dtend
的值 -
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')
它应该工作。