2014-01-05 83 views
9

我試圖用python中的icalendar lib解析一個包含多個事件的提要。使用icalendar解析iCal提要用Python使用icalendar

「摘要」,「描述」等工作正常,但對於「爲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新手。

+1

所以也許它是一個'icalendar.prop.vDDDTypes'對象。有什麼問題? –

+0

拼寫錯誤,總結 – dalore

回答

2

official documentation,你應該已經閱讀,您可以訪問的dtstartdtend值這樣的 -

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

他們icalendar.prop.vDDDTypes對象。看起來,它們都不是字符串,也沒有直觀的__str__()方法。因此你得到了這個輸出。

請閱讀文檔。

17

表示dtstartdtend的對象的屬性爲dt,其中包含標準datetime.datetime對象。

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

令人驚訝的是,直到現在,沒有人高舉這個答案:-) – mastazi

+0

以及從哪裏可以在文檔中找到這些信息?這讓我瘋狂,直到我找到答案! – benzkji

+1

@benzkji最有可能我直接從源代碼中獲得它 –

0

有點晚了這裏,但如果這能幫助: 的API已經因爲(我做了同樣的錯誤//複製粘貼其他計算器後),您需要使用方法解碼(),而不是獲取更新()

您可以找到最新的API參考這裏的iCalendar:http://icalendar.readthedocs.io/en/latest/api.html

更換您的通話將獲得解碼:

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

它應該工作。

+0

它不起作用,返回:''Event'對象沒有屬性'decode'' – user912830823