Мне нужно управлять всеми возможными командами домашней автоматизации, которые я говорю своему голосовому помощнику, например:
- " accendi la luce in corridoio, spegni lalce in camera e imposta 20 in salotto "
- " accendi la luce в камере e cameretta, spegni la luce in corridoio "
- " accendi la luce in salotto "
С помощью одного регулярного выражения я должен иметь возможность подразделить каждый тип команды:
- (" accendi la luce in corridoio", " spegni la luce in camera e", " imposta 20 in salotto" )
- (" accendi la luce in camera e cameretta", " spegni la luce in corridoio")
- (" accendi la luce in salotto ")
Используя регулярное выражение из мой предыдущий вопрос , измененный для использования в нем, я получаю:
>>> print(re.search(r'(accendi.+)(spegni.+)(imposta.+)', "accendi la luce in corridoio, spegni la luce in camera e imposta 20 in salotto").groups())
('accendi la luce in corridoio, ', 'spegni la luce in camera e ', 'imposta 20 in salotto')
Это нормально, но не для этих других команд:
>>> print(re.search(r'(accendi.+)(spegni.+)(imposta.+)', "accendi la luce in camera e cameretta, spegni la luce in corridoio").groups())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groups'
>>> print(re.search(r'(accendi.+)(spegni.+)(imposta.+)', "accendi la luce in salotto").groups())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groups'