2017-10-28 81 views
-1

ics文件:搜索字符串格式,直到<a href="https://wiki.gnome.org/Apps/Evolution" rel="nofollow noreferrer">evolution</a>產生匹配

BEGIN:VCALENDAR 
CALSCALE:GREGORIAN 
PRODID:-//Ximian//NONSGML Evolution Calendar//EN 
VERSION:2.0 
X-EVOLUTION-DATA-REVISION:2017-10-28T04:50:31.240215Z(0) 
BEGIN:VTIMEZONE 
TZID:/freeassociation.sourceforge.net/Asia/Kolkata 
X-LIC-LOCATION:Asia/Kolkata 
BEGIN:STANDARD 
TZNAME:IST 
DTSTART:19701014T230000 
TZOFFSETFROM:+0530 
TZOFFSETTO:+0530 
END:STANDARD 
END:VTIMEZONE 
BEGIN:VTODO 
UID:f13168013f7c8b9abc36c31e43028c34a3f40823 
DTSTAMP:20171019T025556Z 
SUMMARY:Trial 
DTSTART;TZID=/freeassociation.sourceforge.net/Asia/Kolkata: 
20171019T000000 
DUE;TZID=/freeassociation.sourceforge.net/Asia/Kolkata:20171030T000000 
PERCENT-COMPLETE:0 
CLASS:PUBLIC 
DESCRIPTION:Hello 
SEQUENCE:2 
CREATED:20171019T031330Z 
LAST-MODIFIED:20171028T045031Z 
CATEGORIES:Work 
END:VTODO 
END:VCALENDAR 

的問題是在該行20-23,其中:

DTSTART;TZID=/freeassociation.sourceforge.net/Asia/Kolkata: 
20171019T000000 
DUE;TZID=/freeassociation.sourceforge.net/Asia/Kolkata:20171030T000000 

所以,DTSTART的時間在下一行,而DUE的時間戳在同一行。因此,一個簡單的python函數,如:

if line.startswith("DTSTART;TZID"): 
     line = next(finp) 
     dt = line.strip()[0:8] 

將無法​​爲兩者工作。這一個不適用於DUE,爲此我必須另外做一個沒有next的功能。

如何處理任何此類日期/時間等,而不考慮換行符?

+0

我不知道爲什麼否定投票給定的,但它的刺激性當別人管理的時候把負面投票,但不在乎回答或說出爲什麼它是一個糟糕的問題。 – BaRud

回答

-1

也許使用正則表達式將是你的情況下非常有用, 試試這個:

import re 
if line.startswith("DTSTART;TZID"): 
    line = next(finp) 
    dt = re.search('(.*)T.*', line).groups(1) 

if line.startswith("DTSTART;TZID"): 
    dt = re.search('.*\:(.*)T.*', line).groups(1) 

多數民衆贊成在包裹(第一組)是在兩種情況下的郵戳。

解碼正則表達式; 。*匹配任何東西,直到明確指定的字符出現爲止,這是因爲換行符和給我們的「普通」字符串,所以在第一個場景'T'中。在第二個郵票是介於':'和'T'之間的日期。

使用字符串切片時,你不知道會變得困難,如果這個城市是加爾各答總等

+0

嗨,感謝您的回答,但請注意,您剛剛展示了我已經做過的事情。我不是要求正則表達式,但是如果有反正在DTSTART中避免'下一個'的話。 – BaRud

相關問題