Как удалить лишнее из команды?
В общем есть такой код бота:
import speech_recognition
recognizer = speech_recognition.Recognizer()
microphone = speech_recognition.Microphone()
BOT_NAME="рекса"
play_commands = ['включи','запусти','сыграй']
def record_and_recognize_audio(*args: tuple):
with microphone:
recognized_data = ""
# регулирование уровня окружающего шума
recognizer.adjust_for_ambient_noise(microphone, duration=2)
try:
print("Listening...")
audio = recognizer.listen(microphone, 5, 5)
except speech_recognition.WaitTimeoutError:
return
# использование online-распознавания через Google
try:
print("Started recognition...")
recognized_data = recognizer.recognize_google(audio, language="ru").lower()
except speech_recognition.UnknownValueError:
pass
except speech_recognition.RequestError:
print("Check your Internet Connection, please")
return recognized_data
def bot_command(command : str):
if not command.startswith(BOT_NAME):
return
command=command[6:]
if command in play_commands:
play()
return
while True:
voice_input = record_and_recognize_audio()
print(voice_input)
bot_command(voice_input)
В моменте
if command in play_commands:
play(command)
мне нужно обрезать всё лишнее у переменной command, то есть, если строка была "Включи песни", должен запускаться метод с включением музыки и слово "Включи" должно обрезаться, как мне это сделать?
Ответы (1 шт):
Для удаления лишних слов из строки в Python можно использовать метод split(), который разделяет строку на слова и возвращает их в виде списка. Затем можно обрезать первое слово (которое в данном случае является командой) с помощью среза, и объединить оставшиеся слова обратно в строку, используя метод join().
В вашем случае можно заменить строку command=command[6:] на следующий код:
words = command.split()
if words[0] in play_commands:
play()
command = ' '.join(words[1:])
Здесь мы разбиваем строку command на список слов words, проверяем, является ли первое слово командой для воспроизведения, и если это так, то вызываем функцию play() и обрезаем первое слово с помощью среза words[1:]. Затем мы объединяем оставшиеся слова обратно в строку с помощью метода join() и записываем результат обратно в переменную command.