我正在尝试从已从文件加载的电子邮件的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@これから見えるだろう>
我不想尝试检查每个可能的字符编码。
关于我应该怎么做的任何想法?
答案 0 :(得分:1)
您可以尝试chardet project,它使用算法来猜测字符编码:
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@これから見えるだろう>