Пришлось осваивать регулярные выражения. Информации в принципе очень много, но никак не могу разобраться с одной проблемой.
На вход подаю строку “456”. Регулярка составляется вроде как правильно, но в файле ничего не находит, хотя слова, удовлетворяющие шаблону есть.
Формат файла:
<слово><пробел><число>
Код:
#!/usr/bin/python
# -*- encoding: utf-8 -*-
import re
def word_to_re(word):
''' Функция преобразует введенные цифры в регулярное выражение
На входе: word - последовательность цифр
На выходе: reg - регулярное выражение или 1, если не удалось его
составить '''
reg = r""
for i in word:
if(i == '1'):
reg += r"[\.,-\?!]"
elif(i == '2'):
reg += r"[а-г]"
elif(i == '3'):
reg += r"[д-з]"
elif(i == '4'):
reg += r"[и-л]"
elif(i == '5'):
reg += r"[м-п]"
elif(i == '6'):
reg += r"[р-у]"
elif(i == '7'):
reg += r"[ф-ч]"
elif(i == '8'):
reg += r"[ш-ы]"
elif(i == '9'):
reg += r"[ь-я]"
else:
print "Неверный символ", i
return 1
reg += r"\b[0-9]+"
print reg
n = raw_input()
reg = re.compile(reg)
return reg
def search_words(reg):
f = open("dict.txt", "r")
for i in f:
reg_result = reg.match(i)
if(reg_result != None):
print i
f.close
word = raw_input("-->")
reg = word_to_re(word)
search_words(reg)
Заранее спасибо.