В настоящее время я пытаюсь найти решение, в котором у меня есть значение и текстовый файл (.txt), где я хочу проверить, находится ли значение в коде где-то внутри текстового файла.
В настоящее время я имею в виду, что у меня есть текстовый файл, который выглядит следующим образом:
999486
1117978
990583
1128062
1120618
и код, который выглядит следующим образом:
def filter():
item_name = '1128062'
keyword = [line.rstrip('\n') for line in open('keywords.txt')]
has_good = False
sentences = [item_name]
def check_all(sentence, ws):
return all(re.search(r'\b{}\b'.format(w), sentence) for w in ws)
for sentence in sentences:
if any(check_all(sentence, word) for word in keyword):
has_good = True
break
if not has_good or keyword == "":
print("Removed the keyword - " + str(item_name))
sys.exit()
Что делает скрипт:
что у него есть item_name, у которого есть значение.
Открывает ключевое слово, где хранятся все ключевые слова
С помощью функции check_all и для предложения в предложениях: моя идея состояла в том, чтобы проверить, соответствует ли ключевое слово в текстовом файле. И если это так, то мы просто продолжаем программу, а если нет, то выводим ключевое слово Removed и выходим из программы sys.exit.
Однако, когда я пытаюсь запустить эту программу сейчас, я получаю сообщение об ошибке
Exception in thread Thread-2:
Traceback (most recent call last):
File "C:\Users\PC\AppData\Local\Programs\Python\Python36\lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "C:\Users\PC\AppData\Local\Programs\Python\Python36\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "C:/Users/test.py.py", line 324, in filter
if any(check_all(sentence, word) for word in keyword):
File "C:/Users/test.py.py", line 324, in <genexpr>
if any(check_all(sentence, word) for word in keyword):
File "C:/Users/test.py.py", line 321, in check_all
return all(re.search(r'\b{}\b'.format(w), sentence) for w in ws)
File "C:/Users/test.py.py", line 321, in <genexpr>
return all(re.search(r'\b{}\b'.format(w), sentence) for w in ws)
File "C:\Users\PC\AppData\Local\Programs\Python\Python36\lib\re.py", line 182, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object
Я понял, что это должно быть что-то, что касается
def check_all(sentence, ws):
return all(re.search(r'\b{}\b'.format(w), sentence) for w in ws)
и вот где у меня возникает проблема, и я спрашиваю вас, ребята, как я могу проверить, соответствует ли ключевое слово в файле .txt, и если оно не совпадает, то мы выводим Удалено ключевое слово и sys.exit из программы, если она совпадает, мы ничего не делаем.