В Python, как вы справляетесь с другими кодировками в доменных именах? - PullRequest
1 голос
/ 24 апреля 2011

Я пытаюсь проанализировать доменные имена из поля 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@これから見えるだろう>

Я не хочу проверять каждую возможную кодировку символов.

Есть идеи, что мне с этим делать?

1 Ответ

1 голос
/ 24 апреля 2011

Вы можете попробовать проект 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@これから見えるだろう>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...