【问题标题】:Python with ICS files and CSV [duplicate]带有 ICS 文件和 CSV 的 Python [重复]
【发布时间】:2018-12-24 18:17:41
【问题描述】:

一位朋友在个人项目上向我寻求帮助,但我不得不承认我的 Python 技能非常基础。

这里的想法:

我必须下载多重 ics 文件(谷歌日历文件)。 我找到了multidl python程序。它完美地工作。我必须下载的所有文件 url 都存储在一个 txt 文件中。

文件格式类似于 YYYYMMDD_Merdy.ics YYYYMMDD_test.ics

这里是 ics 文件的示例

BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Chambre Champêtre
X-WR-TIMEZONE:Europe/Paris
BEGIN:VEVENT
DTSTART:20180407T140000Z
DTEND:20180408T080000Z
DTSTAMP:20181002T185454Z
UID:3a4j71mpemgjoo66anfd0tcvrh@google.com
CREATED:20180401T165816Z
DESCRIPTION:
LAST-MODIFIED:20180401T165816Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:direct Chantal
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20181001T150000Z
DTEND:20181002T080000Z
DTSTAMP:20181002T185454Z
UID:ccs6aor5cor3cbb270r3ab9kcpi6abb26di34b9kc9im8chj75hm4d35cc@google.com
CREATED:20181001T154801Z
DESCRIPTION:
LAST-MODIFIED:20181001T154801Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Ferme
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

我想要的输出是一个csv文件,格式如下:

X-WR-CALNAME;DTSTART;DTEND;CREATED;LOCATION;SUMMARY
Chambre Champêtre;20180407T140000Z;20180408T080000Z;20180401T165816Z;direct Chantal;
Chambre Champêtre;20181001T150000Z;20181002T080000Z;20181001T154801Z;Ferme

输出的 csv 文件应包含 ICS 文件的所有转换

随便问我什么

感谢大家帮助我。

【问题讨论】:

    标签: python csv icalendar


    【解决方案1】:

    一个解决方案如下。让我知道它是否有帮助。在这里,我正在读取目录 C:/Users/Dell/Documents 中的所有 .ics 文件。在你的情况下是不同的。

    from os import listdir
    
    filenames = listdir(r'C:/Users/Dell/Documents')
    
    for filename in filenames:
        if filename.endswith('.ics'):
            file=open(filename,"r")
            outputhead=['X-WR-CALNAME','DTSTART','DTEND','CREATED','LOCATION','SUMMARY']
            datalist=[]
            outfile=open(filename+'ouput.csv',"w")
            outfile.write(';'.join(outputhead))
            outfile.write('\n')
            outfile.close()
            outfile=open(filename+'ouput.csv',"a+")
            for i in file:
                if i.split(':')[0] in outputhead:
                    datalist.append(i.split(':')[1].replace('\n',''))
                if i.split(':')[0]=='SUMMARY':
                    outfile.write(';'.join(datalist))
                    outfile.write('\n')
                    datalist=[]
            outfile.close()
    

    【讨论】:

      猜你喜欢
      • 2018-02-27
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多