2012-03-11 4 views
0

У меня есть список (words.txt), для которого мне нужен метод поиска, который точнее, чем findline.Более точная альтернатива findline?

Моя текущая функция (показана внизу) использует findline для поиска по списку. Проблема заключается в следующем: вместо того, чтобы возвращать точное соответствие, findline возвращает первую строку, содержащую целое слово, независимо от того, следуют ли за ним лучшие совпадения.

Пример: Я вхожу в «BEES», а findline возвращает «BAUBEES», потому что это первая строка, содержащая подстроку («BEES»). Конечно, это полностью разрушает функцию.

Мне нужна функция или (желательно) встроенный метод, который выглядит в алфавитном порядке для точного соответствия. Поэтому, если «BEES» находится в списке (я уверяю вас это), я хочу, чтобы он вернул «ПЧЕЛ». Или поочередно, если «BAUBEES» и «BEESWAX» были единственными подстрочными совпадениями в списке, идеальная функция вернула бы «BEESWAX», хотя бы потому, что вторая буква в «BEES» равна «E» NOT «A» (как в ' BAUBEES ').

def iswholeword(word): 
    openfile = open('/media/Gianson/Python Programs/words.txt','r') 
    linz = openfile.readlines()[:] 
    openfile.close() 
    hit = findline(word,linz)[:] 
    print 'hit', hit 
    if len(hit)-1 == len(word): 
     return True 
    else: 
     return False 

ответ

1
r = re.compile(r"\b%s" % re.escape(word)) 
for line in openfile: 
    hit = r.search(line) 
    if hit: 
     # whatever 

Объяснение: это построить регулярное выражение из \b (границ слова) и word при рассмотрении, а затем ищет его в каждом line файла. Он находит первое слово, начинающееся с word в строке, и возвращает regexp match object.

+0

К сожалению, я вышел из определения findline как идиот: Защиту findline (слово, Linz): для линии в Линце: если слово в строке: обратной линия Благодарность larsmans, я дам это попытка и отчитаться! – laststandelectronics

+0

Хорошо, попробовал это и получил три ответа: <_ sre.SRE_Match объект в 0xa6151e0> – laststandelectronics

+0

def find (word, letter): index = 0 while index laststandelectronics

Смежные вопросы