2013-08-16 125 views
0

我有數據分成fileids。我正在嘗試通過每個文件ID的數據並搜索由正則表達式定義的表情符號:(:)。如果發現一個表情符號,我需要保留這個信息a)在這個文件ID中找到表情符號b)。當我運行這段腳本並打印表情字典時,我得到0作爲值。這怎麼可能?我是一名初學者。正則表達式表情符號

emoticon = 0 
for fileid in corpus.fileids(): 
    m = re.search('^(:\(|:\))+$', fileid) 
    if m is not None: 
     emoticon +=1 

回答

1

它看起來對我來說,你的正則表達式的工作,並m確實應該不會None

>>> re.search('^(:\(|:\))+$', ':)').group() 
':)' 
>>> re.search('^(:\(|:\))+$', ':)').group() 
':)' 
>>> re.search('^(:\(|:\))+$', ':):(').group() 
':):(' 
>>> re.search('^(:\(|:\))+$', ':)?:(').group() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'NoneType' object has no attribute 'group' 

但是,有幾件事情值得商榷。

  • 這樣只會匹配的是100分%的表情
  • 是真的寫到FileID您所搜索的字符串是什麼?
+0

我在NLTK中使用fileid函數。每個文件包含1個句子。所以我想檢查每個文件ID或句子中的表情符號。這不可能嗎? O和我不想檢查只包含表情符號的字符串,我不得不改變我的正則表達式。謝謝! :) – JohnDoe

+0

我修復了我用fileid所犯的錯誤。 – JohnDoe