Python iCalendar 参加者格式

Python iCalendar Attendee format

在尝试使用 iCalendar pyton lib 解析 .ics 文件时,我 运行 遇到了一个问题,即有多个与会者参加会议。当有多个与会者时,.get 函数 returns 是 vCalAddress 与会者的列表。有没有办法进一步解析出与会者或 return 仅在此列表中的项目上?

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(atten[0]),并且在大多数情况下我得到了我正在寻找的内容(这是与会者列表的第一个结果)。不过,目前的一个缺点是,如果只有一个与会者,你只会得到该与会者输出的第一个字母(如果你只是使用 print(atten[0]) 如果你对一个与会者使用 print(atten) 你得到整个字符串。我会继续挖掘这个。

要在多人时获得特定的与会者,您可以执行以下操作

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:'