2012-09-01 109 views
0

我需要先替換風險相關的詞,如冒險風險無風險[風險](風險)風險。風險!風險*轉化爲風險並計算風險並將其退回。如何替換單詞,計算單詞並保存計數

當doint如此,有一些條件。我不應該把「風險」和任何有風險的詞彙統稱爲星號。

例如,在一個很長的文檔中,可能會有這麼多風險相關的詞。爲了簡化說明,

我喜歡冒險。我不喜歡冒險路線。

無風險利率多少?

什麼是星號? [風險]是風險。

來自上述文件, 1)需要將風險和風險轉換爲風險。 (也可能有其他詞彙,所以不要冒險)。 2)只計算風險,包括[風險]風險。但沒有風險和星號。

該示例非常簡化。再次,「風險」,任何像風險無風險的風險風險較高,任何內部風險([{,之前或以。* !?等結尾的任何'風險')應在計入風險之後進行計算。含有風險的組件不應該被計算在內。此外,風險 - 不應該算作。

感謝。

市場風險風險[風險

+0

替代風險+一些字符串(有風險的風險較高)納入風險,消除風險 - 之後,那麼我這樣做。這麼多步驟需要花費太多時間。從集合導入defaultdict >>> word_dict = defaultdict(INT) >>>用於MYLIST行: \t詞語= line.lower()分裂() \t用於字詞: \t \t word_dict [字] + = 1 \t \t >>>用於word_dict字: \t如果在字 '風險': \t \t字,word_dict [字] \t \t ( '風險',7) ('作爲(1) ('[risk',1) – Jimmy

+0

注意:一般來說,您可能需要[nltk.stem](http://nltk.org/api/nltk.stem.html)包等內容。 – jfs

回答

0

它真的是如何撰寫經常的事表達式我對RE不是很擅長,但下面的例子適用於你的例子:

>>> import re 
>>> a= '''I like to take risk. I don't like to take a riskier route. 
How much is the risk-free interest rate? 
What is asterisk? [risk] is risk. ''' 
>>> pattern=r'\brisk[^\-]?\w*\b' 
>>> re.subn(pattern,'risk',astr) 
("\nI like to take risk. I don't like to take a risk route.\nHow much is the risk-free interest rate?\nWhat is asterisk? [risk] is risk.\n" , 5) 

基於以上,你可能可以實現你的邏輯是:

counts=0 
with open(myfile, 'r') as f: 
    with open(my_new_file, 'a') as fo: 
     for line in f: 
      newline, lcount= re.subn(pattern,'risk',line) 
      counts+=lcount 
      fo.write(newline) 
+0

我得到了一個錯誤。它說計數沒有定義。 'a'選項意味着什麼? – Jimmy

+0

「a」選項用於追加。 (請參閱[文檔](http://docs.python.org/library/functions。html#open)) – smunk

+0

當您打開一個文件時,'a'表示「append」,即三種模式之一(即read-r,write-w,append-a)。 –