shlex имеет функцию .split() . Он отличается от str.split() тем, что он не сохраняет кавычки и рассматривает цитируемую фразу как одно слово:
.split()
str.split()
>>> import shlex >>> shlex.split("sudo echo 'foo && bar'") ['sudo', 'echo', 'foo && bar']