从 .ics 文件中删除主题 - python

Remove subject from .ics file - 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

您的输入不是有效的 ICS 文件(请注意 START:VEVENT 之前的 END:VEVENT 和任何对象之外的 SEQUENCE。因此,您不能使用 an 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)