【发布时间】:2020-07-11 22:55:06
【问题描述】:
当我在 Python 3.75 中运行这段代码时,vscode:
from icalendar import Calendar
import requests
SkeddaBridgeURL = 'https://bridgeartspace.skedda.com/ical?key=457bda7'
f=requests.get(SkeddaBridgeURL)
c = Calendar.from_ical(f.text)
我收到此错误:
VTIMEZONEs sub-components' DTSTART must be of type datetime, not date
File "/Users/jeff/Scrape/Code/skedda.py", line 6, in <module>
c = Calendar.from_ical(f.text)
但是当我通过 https://icalendar.org/validator.html 的 ical 验证器运行此 URL 时,我没有收到任何错误。
我觉得没有资格称这是一个错误,但也许是!
我尝试处理的一种方法是通过启动标志来抑制断言错误,如下所示:
python 3 -Oc "Assert False"
但我看不到如何在 VSCode 中将其设置为标志,我也在学习。
此外,在此代码上运行调试器,通过 pip3 安装了icalendar,我无法进入代码或修改它。我需要弄清楚如何从 github 下载整个模块并删除断言吗?
【问题讨论】:
-
在 VSC 之外运行它会出现什么错误?
-
在命令行上出现同样的错误,除非我添加了 -Oc "Assert False" 标志。
-
看起来数据确实有缺陷,这意味着验证器也是。抑制断言异常可能有效,也可能无效。您可以在下载数据后和转换之前修复数据。它只是一个文本文件,其格式记录在 RFC 2445 和 5545 中,因此在 Python 中进行调整应该不会太难。或者你可以试试 ics 库而不是 icalendar,看看它是否更宽容。
标签: python visual-studio-code icalendar assertion