如何替换单词,计算单词,并保存计数

时间:2012-09-01 00:24:54

标签: python

我需要首先替换风险相关的词语,例如风险风险较高的无风险[风险](风险)风险。风险!风险*风险,只计算风险并将其返还。

当这样做时,有一些条件。我不应该将'risk-'和任何有风险的词视为像星号这样的组件。

例如,在长文档中,可能存在许多与风险相关的单词。为简化说明,

我喜欢承担风险。我不喜欢采取更危险的路线。

无风险利率是多少?

什么是星号? [风险]是风险。

从上述文件中, 1)需要将风险和风险转化为风险。 (也可能有其他的话,所以不要坚持风险更高)。 2)仅计算包括[风险]风险在内的风险。但不是冒险和星号。

这个例子非常简单。同样,“风险”,任何风险,如风险无风险风险风险,内部任何“风险”([{,任何'风险'之前或之后。*!?等等......应该在将其替换为风险后计算。不应计算包含风险作为一个组成部分的风险。此外,不应计算风险。

感谢。

市场风险风险[风险

1 个答案:

答案 0 :(得分: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)