python - 从 .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
解决方案
您的输入不是有效的 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)
推荐阅读
- qt - 在 qt/qml 中具有外部“委托”的 ListView
- c++ - 修复此编译错误:标识符“and”是 C++ 中的特殊运算符名称 [-Werror=c++-compat]?
- javascript - 如何将您的输入数据与从服务接收的数据进行比较,以检查有效性(Angular)
- angular - 如何使用插值将值作为参数传递给函数
- java - 如何从资源中读取 Json 文件
- heroku - 如何使用 pgAdmin4 编辑数据库以连接 Heroku
- azure - Azure 媒体播放器在视频播放时中断
- ios - 使用 storyboard?.instantiate 返回“意外发现 nil”错误
- ansible - Ansible模块获取windows的所有服务信息
- c - 为什么在 C 中使用外部库时 eclipse 不调试?