首页 > 解决方案 > 从 .ics 文件中删除主题 - python

问题描述

我需要您对 .ics 格式的日历的帮助。我想用python从日历中删除主题约会('SUMMARY:'之后的文本)并将其保存为.ics。我怎样才能做到这一点?下面我从我的 .ics 文件中插入一段文本。

SEQUENCE:0
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;RELATED=START:-PT5M
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:f468cba2-38bf-4fb1-ace1-1c6e6a9cde91
SUMMARY:
  This is a test text. This is a test text. This is a test text. This is a te
 test text.
LOCATION:calend1\;
ORGANIZER;CN=Kalendarz1:mailto:kalendarz1@nask.pl
DTSTART;TZID="Europe/Warsaw":20180529T123000
DTEND;TZID="Europe/Warsaw":20180529T130000
STATUS:CONFIRMED
CLASS:PUBLIC
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
TRANSP:OPAQUE

标签: pythonicalendar

解决方案


您的输入不是有效的 ICS 文件(请注意在任何对象END:VEVENT之前START:VEVENT和之外)。SEQUENCE因此,您不能使用ICS parser。根据您获得此文件的位置,以及它的使用者是否期望 ICS 或这种损坏的 ICS 相邻格式,您可能需要投资修复该文件。

只是打击主题可以简单地使用正则表达式:

import re

with open('test.ics', 'r', encoding='utf-8') as icsf:
    broken_ics = icsf.read()

out = re.sub(r'\nSUMMARY:(?:.*(?:\n )?)*', '', broken_ics)
print(out)

推荐阅读