Одна из проблем ищут ключевые слова определить, что вы имеете в виду по ключевому слову и как содержимое файла должны быть разобрано, чтобы найти полный набор ключевых слов. Если «aa» - это ключевое слово, должно ли оно соответствовать «aaa» или, может быть, «aa()»? Может ли ключевое слово содержать цифры в нем?
Простое решение состоит в том, чтобы сказать, что ключевые слова являются только алфавитами и должны соответствовать смежным . буквенные строки ровно, без учета регистра Кроме того, матчи следует рассматривать построчно, а не приговор по приговору Мы можем использовать регулярные выражения, чтобы найти буквенные последовательности и наборы для проверки локализации следующим образом:.
keys.txt
aa bb
test.txt
aa is good
AA is good
bb is good
cc is not good
aaa is not good
test.py
import re
keyfile = "keys.txt"
testfile = "test.txt"
keys = set(key.lower() for key in
re.findall(r'\w+', open(keyfile , "r").readline()))
with open(testfile) as f:
for line in f:
words = set(word.lower() for word in re.findall(r'\w+', line))
if keys & words:
print(line, end='')
Результат:
aa is good
AA is good
bb is good
Добавить несколько правил для того, что вы имеете в виду матч, и это становится все более сложным.
EDIT
Предположим, у вас есть одно ключевое слово в каждой строке, и вы просто хотите подстроке (то есть, «аа» соответствует «ааа») вместо поиска по ключевым словам, вы могли бы сделать
keyfile = "keys.txt"
testfile = "test.txt"
keys = [key for key in (line.strip() for line in open(keyfile)) if key]
with open(testfile) as f:
for line in f:
for key in keys:
if key in line:
print(line, end='')
break
Но я просто догадываюсь, каковы ваши критерии.
вы могли бы обеспечить ввод и ожидаемым вывод? –
Каков формат этого файла ключевого слова? Букет слов в одной строке, разделенных пробелами? – tdelaney
ключевые слова («AA», «ВВ»): файл содержит строки, как (аа хорошо, бб очень хорошо, куб.см не хорошо): ожидается выход как: аа хороший бб очень хорошо – Saadi381