Обнаружение акцентов в словах (Python)
Вот в чем дело: я написал программу, которая находит все классы алгоритмов в словаре. Однако у меня возникли проблемы с акцентированными персонажами. В настоящее время мой код считывает их, обрабатывает, как будто они невидимы, но все равно выводит какой-то код замены в конце в виде ' xc3???". Я хотел бы отбросить все слова с акцентами, но я не знаю, как их распознать.
Вещи, которые я пробовал:
- проверка, является ли тип unicode
- использование регулярного выражения для проверки слов, содержащих 'xc3 '
- декодирование / кодирование (я не совсем понимаю unicode, но все, что я пытался, не сработало).
Вопрос / проблема: мне нужно узнать, как определить акценты, но моя программа выводит акценты в командной строке как странные ' xc3???"символы, которые не так программа обрабатывает их, так как я не смог найти ни одного слова, содержащего" xc3???- несмотря на то, что это было напечатано командованию. линия.
Пример: sé - > sxc3xa9, а sé и s рассматриваются моей программой как анаграммы.
Тестовый словарь:
stop
tops
pots
hello
world
pit
tip
xc3xa9
sé
s
se
Вывод кода:
Found
xc3xa9
['pit', 'tip']
['world']
['sxc3xa9', 's']
['\xc3\xa9']
['stop', 'tops', 'pots']
['se']
['hello']
Сама программа:
import re
anadict = {};
for line in open('fakedic.txt'):#/usr/share/dict/words'):
word = line.strip().lower().replace("'", "")
line = ''.join(sorted(ch for ch in word if word if ch.isalnum($
if isinstance(word, unicode):
print word
print "UNICODE!"
pattern = re.compile(r'xc3')
if pattern.findall(word):
print 'Found'
print word
if anadict.has_key(line):
if not (word in anadict[line]):
anadict[line].append(word)
else:
anadict[line] = [word]
for key in anadict:
if (len(anadict[key]) >= 1):
print anadict[key]
Помощь?
2 ответа:
Так что в основном поцарапайте мой ответ... Просто посмотрите сюда:
Как проверить, находится ли строка в Python в ASCII?
Суть в том, что вы можете проверить каждый символ, чтобы увидеть, еслиord
символа меньше 128, что позволяет проверить, если это символ с ударением. Или вы можете сделать много попыток и ловить, ища ошибки unicode, которые будут бросать во время акцентированных символов. (Последнее кажется более эффективным ответом)Это определенно был опыт обучения для меня тоже :) извините, что так долго