Как заменить слова, подсчитать слово и сохранить счет

Мне нужно сначала заменить связанные с риском слова, такие как риск рискованного риска без риска [риска] (риска). риск! риск * в риск и рассчитывать только на риск и вернуть его.

Когда это делается, есть некоторые условия. Я не должен считать «риск» и любые слова, которые имеют риск как компонент, похожий на звездочку.

Например, в длинном документе может быть так много связанных с риском слов. Чтобы упростить объяснение,

#

Мне нравится рисковать. Я не люблю рисковать.

Сколько стоит безрисковая процентная ставка?

Что такое звездочка? [риск] – это риск.

#

из вышеупомянутого документа, 1) Необходимо заменить риск и рискнуть рискованно. (могут быть и другие слова, поэтому не стоит рисковать). 2) учитывайте только риск, включая риск [риска]. но не с риском и звездочкой.

Пример очень упрощен. Опять же, «риск», любые слова, такие как рискованная рискованная рискованность, рискованнее, любой «риск» внутри ([{, любой «риск», который предшествует или заканчивается. * !? и т. Д., Следует учитывать после замены его на риск. которые содержат риск как компонент, не должны учитываться. Кроме того, риск не следует учитывать.

Благодарю.

риск рыночного риска [риск

Речь идет о том, как составлять регулярное выражение. Я не очень хорош в 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)