1

ファイルから読み込まれたメールのMessage-IDフィールドからドメイン名を解析し、fromフィールドのドメインと比較して、どの程度一致しているかを確認しようとしています。次に、を使用して距離を比較しnltk.edit_distance()ます。

使っています

re.search('@[\[\]\w+\.]+',mail['Message-ID']).group()[1:]

しかし、1つのスパムメッセージには次のものがあります

mail2['Message-ID']
'<2011315123.04C6DACE618A7C2763810@\x82\xb1\x82\xea\x82\xa9\x82\xe7\x8c\xa9\x82\xa6\x82\xe9\x82\xbe\x82\xeb\x82\xa4>'

だから私がマッチしようとすると、それはマッチを返さないgroup()

Shift_JISでデコードできますが、そこからどうしたらよいかわかりません <2011315123.04C6DACE618A7C2763810@これから見えるだろう>

考えられるすべての文字エンコードを試して確認したくありません。

私がそれで何をすべきかについてのアイデアはありますか?

4

1 に答える 1

1

アルゴリズムを使用して文字エンコードを推測するchardetプロジェクトを試すことができます。

import chardet

text = '<2011315123.04C6DACE618A7C2763810@\x82\xb1\x82\xea\x82\xa9\x82\xe7' + \
    '\x8c\xa9\x82\xa6\x82\xe9\x82\xbe\x82\xeb\x82\xa4>'
cset = chardet.detect(text)
print cset
encoding = cset['encoding']
print encoding, text.decode(encoding)

出力:

{'confidence': 1, 'encoding': 'SHIFT_JIS'}
SHIFT_JIS <2011315123.04C6DACE618A7C2763810@これから見えるだろう>
于 2011-04-24T01:27:02.343 に答える