2014-11-03 60 views
-2

我有一個python腳本,它可以從推文,#標記中刪除RT轉發。現在我想刪除用戶名,也就是說,@ Twitter的@ tweetz:即@符號後跟用戶名其次是:(冒號)..我只是想刪除這樣的用戶:例如,如果推文是「@bugun:MHP'li KemallettinYılmazBank Asya'yayapılanintihardırhttp://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw}」我想刪除@bugun:並得到結果爲「MHP'li Kemallettin耶爾馬茲銀行Asya'yayapılanintihardırhttp://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw從鳴叫中刪除用戶

這是我從鳴叫哈希和RT移除代碼:

# coding:utf-8 
import sys, re 
x = open("test.txt", "r") 
for line in x: 
    z = lambda line: re.compile('\#').sub('', re.compile('RT @').sub('@', line, count=1).strip()) 
    print z(line) 
    saveFile = open("test_result.txt", "a") 
    saveFile.write(z(line)) 
    saveFile.write("\n") 
    saveFile.close() 
+0

不知道鳴叫的一部分,但如果'@'保證是一個用戶,一個簡單的正則表達式,比如'@ [^:] + :'是你所需要的。 – sln 2014-11-03 21:49:46

+0

在你的例子中'^ @ \ w +:'只會捕獲第一個用戶名 – Tico 2014-11-03 21:51:28

回答

0

用你給的樣品:

「@bugun:MHP'li Kemallettin耶爾馬茲銀行Asya'yayapılanintihardırhttp://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw}」

代碼(Python的3.4):

# coding:utf-8 
import sys, re 
x = open("test.txt", "r") 
for line in x: 
    z = lambda line: re.compile('\#').sub('', re.compile('^@\w+: ').sub('', line, count=1).strip()) 
    print (z(line)) 
    saveFile = open("test_result.txt", "a") 
    saveFile.write(z(line)) 
    saveFile.write("\n") 
    saveFile.close() 

將輸出:

MHP’li Kemallettin Yılmaz Bank Asya'ya yapılan intihardır http://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw

0

你所擁有的就是找到正確的正則表達式。順便說一句,我在你的例子中加入了一個hashtag,並且稍微改變了你的代碼以去除hashtag - 不確定是否真的是你想要的。 下面的函數將刪除任何哈希標籤和用戶名後跟一個「RT @」,後跟「:」。希望有所幫助。

import sys, re 

tweet_text = "RT @bugun: MHP’li Kemallettin Yılmaz #Hello Bank Asya'ya yapılan intihardır http://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw" 

def transform_tweet(line): 
    return re.compile('#\w+ ').sub('', re.compile('RT @\w+: ').sub('', line, count=1)).strip() 

運行transform_tweet(tweet_text),我有這樣的:

"MHP’li Kemallettin Yılmaz Bank Asya'ya yapılan intihardır http://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw"