Как мне сопоставить слово в текстовом файле, используя Python? - PullRequest
4 голосов
/ 08 марта 2011

Я хочу найти и сопоставить определенное слово в текстовом файле.

with open('wordlist.txt', 'r') as searchfile:
        for line in searchfile:
            if word in line:
                    print line

Этот код возвращает даже слова, которые содержат подстроки целевого слова. Например, если слово «там», то поиск возвращает «там», «следовательно», «тем самым» и т. Д.

Я хочу, чтобы код возвращал только те строки, которые содержат "там". Период.

Ответы [ 5 ]

5 голосов
/ 08 марта 2011
import re

file = open('wordlist.txt', 'r')

for line in file.readlines():
    if re.search('^there$', line, re.I):
        print line

Функция re.search сканирует строку line и возвращает true, если находит регулярное выражение, определенное в первом параметре, игнорируя регистр с re.I.Символ ^ означает «начало строки», а символ $ означает «конец строки».Таким образом, функция поиска будет возвращать true только в том случае, если она соответствует там , перед которым стоит начало строки, а за ней следует конец строки, иначе говоря, изолированный.

5 голосов
/ 08 марта 2011

разбить строку на токены: if word in line.split():

1 голос
/ 08 марта 2011

Вы всегда можете использовать регулярные выражения, что-то вроде:

import re

with open('wordlist.txt', 'r') as searchfile:
        for line in searchfile:
            if re.search( r'\sthere\s', line, re.M|re.I):
                    print line
  • \sthere\s - любой пробел, за которым следует 'там', за которым следует любой пробел
  • re.I - означает, что регистр не учитывается
  • re.M - в данном случае это не имеет значения (поскольку строки имеют только 1 \ n)
0 голосов
/ 08 марта 2011

Посмотрите модуль re (регулярные выражения).re.search с регулярным выражением «есть» - это то, что вы хотите.

0 голосов
/ 08 марта 2011

Вы должны использовать регулярное выражение.Хорошее место для начала может быть регулярное выражение howto из документации по Python.

...