Как обнаружить ключевые слова из текста в Python - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь сделать скрипт на python для использования на работе, чтобы автоматизировать некоторые из моих работ. Я использовал модуль pyautogui для имитации щелчков мыши и нажатий клавиш, и до сих пор он работал отлично!

Сейчас я пытаюсь выяснить, как автоматически подать на python несколько строк текста и определить некоторые ключевые слова. Текст будет находиться в одном и том же месте каждый раз, когда я запускаю скрипт, поэтому я решил, что могу использовать pyautogui, чтобы выбрать нужный текст и скопировать его в буфер обмена. После этого я использую модуль win32clipboard для подачи текста на python.

В итоге Python просто печатает все, что находится в моем буфере обмена. Что я делаю неправильно? Есть ли более простой способ?

import win32clipboard

win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
mytext = input(data)
keywords = ["m1", "M1", "Melding 1"]

if any(keyword in mytext for keyword in keywords):
     print("test")

input('Press ENTER to exit')

Ответы [ 3 ]

1 голос
/ 10 мая 2019

Ваша общая проблема в том, что вы не анализируете свой текст.Это входит как один большой блок.Вам нужно разделить его на список слов, чтобы можно было оценить каждое слово.

...
wordlist = mytext.split()

for trigger in keywords:
   if any(trigger in s for s in wordlist):
      print("HIT!")
...
1 голос
/ 10 мая 2019

input(data) отображает data и ожидает вашего ввода (который впоследствии становится значением mytext).Просто удалите эту строку.data - это ваш текст:

if any(keyword in data for keyword in keywords):
     print(keyword)

Если у ваших ключевых слов нет пробелов , вы можете улучшить свою программу, чтобы избежать случайного совпадения подстрок и повысить производительность, разбив текст на:токены и сравнение набора токенов с набором ключевых слов:

keywords = {"m1", "M1", "Melding_1"}
if keywords & set(data.split()):
     print("test")
1 голос
/ 10 мая 2019

Вы можете заменить:

if any(keyword in mytext for keyword in keywords):
     print("test")

с более длинным и уродливым (но функциональным!):

for word in mytext.split(' '):
    for keyword in keywords:
        if keyword == word: print word
...