tengo una cadena en el formato:Separación de cadenas en el formato requerido, manera Pythonic? (Con o w/o expresiones regulares)
t='@abc @def Hello this part is text'
quiero conseguir esto:
l=["abc", "def"]
s='Hello this part is text'
me hizo 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:]
Se 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]'
falla. Los @ nombres están allí al principio y puede haber texto después de @names, que posiblemente contengan @.
Claramente, puedo agregar un espacio al inicio y encontrar la primera palabra sin '@'. Pero eso no parece una solución elegante.
¿Qué es una forma pitónica de resolver esto?
gracias por extenderlo :-) Al principio no me resultó claro que puede tratarse de cualquier cantidad de palabras. Pero también tuve problemas para encontrar la sintaxis correcta para la expresión regular cuando lo intenté de nuevo en realidad. Entonces veo que el grupo anónimo está ahora adentro, lo tuve afuera. – MrTopf
¿te molestarías en explicar la expresión regular? ¿Por qué encuentra un número variable de "etiquetas" o lo que sea que se llame a @thing? – hasen
Bien jugado Sir. Gracias por la explicación completa. – bernie