2012-11-15 93 views
-1

需要這方面的一些建議...我有鳴叫如何從推文中刪除日期?

Mon Apr 06 22:19:45 PDT @switchfoot http://twitpic.com/2y1zl - Awww, that's a bummer. :(You shoulda got David Carr of Third Day to do it. ;D 
Mon Apr 06 22:19:49 PDT is upset that he can't update his Facebook by texting it... and might cry as a result :(School today also. Blah! 
Mon Apr 06 22:19:53 PDT @Kenichan I dived many times for the ball. Managed to save 50% :(The rest go out of bounds 
Mon Apr 06 22:19:57 PDT my whole body feels itchy and like its on fire :(

如何刪除這個星期一4月6二十二時19分57秒PDT的一些收藏?使用正則表達式?

+2

產生該輸出的是什麼?你不能改變這一切嗎? –

+0

我已經嘗試過正則表達式re.sub但結果不滿意... – Aikin

+0

對於Martijn來說,輸出有相同的推文,但沒有日期和這個PDT的東西......實際上所有的推文都是一樣的......與PDT具有相同的日期形式...... PDT究竟意味着什麼? – Aikin

回答

2

如果這是一個字符串,簡單地分割在第一PDT行:

for line in tweets.splitlines(): 
    print line.split(' PDT ', 1)[1] 

線路被分割上的字符PDT(用空格)的第一次出現,並且將結果的第二半被打印。

但也許你可以改爲防止輸出字符串的代碼在第一個位置添加日期?

+0

只有在所有時間在PDT時纔有效...... – katrielalex

+0

@katrielalex:當然,但沒有關於時間戳*中有什麼變化*的信息。 –

+0

哦,的確如此。但我認爲假設時間總是格式化,而不是假設他們總是處於同一時區更安全。 – katrielalex

2
for line in lines: 
    print line[24:] 

可能很簡單,如果日期/時間格式總是相同的。

+0

除非您可以更改推文格式,否則我認爲這是最好的方法 - 它只依賴不改變的twitter輸出格式。 – katrielalex

1

如果他們是字符串都存儲在相同的方式,你可以只是做一個分裂:

tweet = "Mon Apr 06 22:19:57 PDT SomeGuy Im not white enough to be excited for a new version of Windows". 

tweet= tweet.split(None, 5)[-1] 

結果鳴叫是

「SomeGuy我不是足夠的白色被激發新版本的 Windows「

+0

更簡潔。我不知道斯普利特可以做到這一點。現在我知道了。文檔:http://docs.python。組織/ 2 /庫/ stdtypes.html#str.split – Amanda

0

好像把它分解成一個單詞列表和砍掉前六個更可能保持consiste nt跨越時區的變化。

clean_tweets = [] 

for tweet in tweets: 
    words = tweet.split() 
    del words[0:5] 
    clean_tweet = " ".join(words) 
    clean_tweets.append(clean_tweet) 

默認情況下,split()將在空格上拆分,因此您不必指定分隔符。

0

我假設你不能使用PDT,因爲你不能假設他們總是PDT。看起來像字符串中最容易識別的部分是[0-9] +:[0-9] +:[0-9] + - 時間。

/^.*[0-9]+:[0-9]+:[0-9]+\s+[A-Z]{3}\s*(.*)$/ 

捕獲時間後的字符串和全部大寫的3個字母的時區。