1

我正在尝试从从文件加载的电子邮件的 Message-ID 字段中解析域名,并将其与 from 字段的域进行比较,以查看它的匹配程度。然后我使用 比较距离nltk.edit_distance()

我正在使用

re.search('@[\[\]\w+\.]+',mail['Message-ID']).group()[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 回答