У меня была похожая проблема со стандартными смайликами, которые нужно заменить значениями. Здесь - список смайликов. У меня они были в виде простого текстового файла (чтобы я мог добавлять / удалять его, как и когда это необходимо), разделенных вкладкой, как.
:[ -1
:/ -1
:( -1
:) 1
Тогда прочитайте это в словарь
emoticons = {}
for line in open('data/emoticons.txt').xreadlines():
symbol, value = line.split('\t')
emoticons[str(symbol)] = int(value)
Тогда функция поиска
def mark_emoticons(t):
for w, v in emoticons.items():
match = re.search(re.escape(w),t)
if match:
print w, "found "
Вызовите функцию с помощью
mark_emoticons('Hello ladies! How are you? Fantastic :) Look at your man ...')
Что касается L33t-речь, у меня есть отдельный файл slangs.txt, который выглядит как
u you
ur you are
uw you are welcome
wb welcome back
wfm works for me
wtf what the fuck
Аналогичная функция для чтения словаря сленга {} и аналогичная функция для замены сленга.
def mark_slangs(t):
for w, v in slangs.items():
s = r'\b' + w + r'\b'
match = re.search(s,t)
if match:
#print w, "found in:",t, "replacing with",readtable.slangs[w]
t = re.sub(w,slangs[w].rstrip(),t)
...
Из Библиотека Python the re.escape ()
re.escape (строка)
Вернуть строку с
все не алфавитно-цифровые символы с обратной косой чертой;
это полезно, если вы хотите соответствовать
произвольная буквенная строка, которая может иметь
метасимволы регулярных выражений в
это.
В зависимости от ваших потребностей вы можете использовать re.findall ()