Python iCalendar Attendee格式

时间:2018-02-05 16:51:27

标签: python parsing icalendar

在尝试使用iCalendar pyton lib解析和.ics文件时,当会议有多个与会者时,我遇到了一个问题。当有多个与会者时,.get函数会返回vCalAddress与会者列表。有没有办法进一步解析出席者或只返回此列表中的项目?

from icalendar import Calendar, Event, vDDDTypes, vCalAddress
g = open('Example.ics','rb')
gcal = Calendar.from_ical(g.read())

for event in gcal.walk('vevent'):
    org = event.get('organizer')
    date = event.get('dtstart')
    summary = event.get('summary')
    atten = event.get('attendee')

    print (date.dt)
    print (summary)
    print (org)
    print (atten)
    print ('-----------')

输出

2017-09-29 15:00:00-07:00
FC08F10 Review
mailto:Example1@gmail.com
[vCalAddress('mailto:Example2@gmail.com'), 
vCalAddress('mailto:Example3@gmail.com'), 
vCalAddress('mailto:Example4@gmail.com')]
-----------

修改 我试图为参与者字段使用get_line函数,并通过我收到的错误消息,我发现vCalAddress是一个python列表。我将我的print语句编辑为以下print(atten[0]),并且在大多数情况下我得到了我正在寻找的内容(这是与会者列表的第一个结果)。现在回过头来看,如果只有一位与会者,你只能得到该与会者输出的第一个字母(如果你只使用print(atten[0])与一位与会者一起使用print(atten)得到整个字符串。我会继续挖掘它。

1 个答案:

答案 0 :(得分:0)

如果有多个特定与会者,您可以执行以下操作

atten = event.get('attendee')
print(atten[0])
print(atten[1])

如果只有一位与会者,则无需使用列表索引,只需打印变量

即可
print(atten)

修改

要解析多个与会者,请执行以下操作:

for event in gcal.walk('vevent'):
  if atten[i] == 'm':
        print(atten)
    else: 
        print(atten[i])
        ++i

其中'm'是与会者字符串的第一个字母。与会者的第一个字母将取决于其在.ics文件中的格式。我的所有联系人都在使用'mailto:'