2016-09-15 157 views
0

我有一個數據集,它看起來像這樣刪除它,查找子字符串和使用正則表達式,蟒蛇

"See the new #Gucci 5th Ave NY windows customized by @troubleandrew for the debut of the #GucciGhost collection." 
"Before the #GucciGhost collection debuts tomorrow, read about the artist @troubleandrew" 

,所以我試圖擺脫所有的@和與它相連的字樣。我的數據集應該看起來像這樣。

"See the new #Gucci 5th Ave NY windows customized by for the debut of the #GucciGhost collection." 
    "Before the #GucciGhost collection debuts tomorrow, read about the artist" 

所以我可以使用一個簡單的替換語句來擺脫@。但是相鄰的單詞是一個問題。

我正在使用重新搜索/查找事件。但我無法刪除這個詞。

P.S - 如果它是一個單詞,它不會是一個問題。但在這裏和那裏有多個單詞連接到@

+0

你有什麼問題?什麼代碼不會刪除@ +單詞?你嘗試過're.sub'嗎? –

+0

我的問題是我無法刪除整個@ +單詞。我正在使用're.findall'。無論如何,'re.sub'起作用。謝謝 –

回答

2

我的數據集可以使用正則表達式

import re 

a = [ 
"See the new #Gucci 5th Ave NY windows customized by @troubleandrew for the debut of the #GucciGhost collection.", 
"Before the #GucciGhost collection debuts tomorrow, read about the artist @troubleandrew" 
] 
pat = re.compile(r"@\S+") # \S+ all non-space characters 
for i in range(len(a)): 
    a[i] = re.sub(pat, "", a[i]) # replace it with empty string 
print a 

這會給你想要的東西。

0

地道版本,潛艇額外的空間:

import re 

a = [ 
    "See the new #Gucci 5th Ave NY windows customized by @troubleandrew for the debut of the #GucciGhost collection.", 
    "Before the #GucciGhost collection debuts tomorrow, read about the artist @troubleandrew" 
] 

rgx = re.compile(r"\[email protected]\S+") 

b = [ re.sub(rgx, "", row) for row in a ] 

print b 

\s?\s比賽' '?代表zero or one發生。