0

「1ディック1ジョン1本11異なる1a1異なる1を読む」のような頻度を示すテキストファイルがあります。これらの単語に対して定義された辞書もあります。dict={'a':1、'book':2 }

単語を辞書の値に置き換えたいと思います。誰かがこれがどのように行われるか教えてもらえますか?

4

4 に答える 4

4
text = # your text here
dictionary = # your dictionary here (don't call it dict!)
' '.join(str(dictionary.get(word, word)) for word in text.split(' '))
于 2012-05-31T04:30:05.647 に答える
1

簡単だ:

text = # your text here
for word in dictionary:
    text = text.replace(word, str(dictionary[word]))

編集

部分文字列に関する問題については、正規表現を使用できます。

import re
text = # your text here
for word in dictionary:
    text = re.sub('^|\s' + word + '\s|$', str(dictionary[word]) + ' ', text)
于 2012-05-31T04:26:19.293 に答える
1
import re
text = # your text here
dictionary = # your dictionary here (don't call it dict!)
re.sub("\\b.+?\\b", lambda x: str(dictionary.get(*[x.group()]*2)), text)
于 2012-05-31T04:38:16.983 に答える
0

を使用することもできますがre.sub置換引数として関数を指定します

import re

frequencies = {'a': 1, 'book': 2}

input_string = "read 1 dick 1 john 1 book 1 read 1 different 1 a 1 different 1 "

def replace_if_found(m):
    word = m.group(1)
    return str(frequencies.get(word, word)) + m.group(2)

print re.sub(r'(\w+)( \d+)', replace_if_found, input_string)

...出力が得られます:

read 1 dick 1 john 1 2 1 read 1 different 1 1 1 different 1

そこにある利点は、1 つ以上の単語文字の後に 1 つ以上の数字が続く場所を置き換えるだけであるということです。

于 2012-05-31T04:39:27.883 に答える