在尝试使用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)
得到整个字符串。我会继续挖掘它。
答案 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:'