Separación de cadenas en el formato requerido, ¿forma pitónica? (con o sin Regex)
Tengo una cadena en el formato:
t='@abc @def Hello this part is text'
Quiero obtener esto:
l=["abc", "def"]
s='Hello this part is text'
Hice esto
a=t[t.find(' ',t.rfind('@')):].strip()
s=t[:t.find(' ',t.rfind('@'))].strip()
b=a.split('@')
l=[i.strip() for i in b][1:]
Funciona en su mayor parte, pero falla cuando la parte de texto tiene la '@'. Por ejemplo, cuando:
t='@abc @def My email is [email protected]'
fracasa. Los @names están allí al principio y puede haber texto después de @names, que posiblemente contenga @.
Claramente puedo agregar inicialmente un espacio y descubrir la primera palabra sin '@'. Pero eso no parece una solución elegante.
¿Cuál es una forma pitónica de resolver esto?