次の形式の文字列があります。
t='@abc @def Hello this part is text'
私はこれを手に入れたい:
l=["abc", "def"]
s='Hello this part is text'
これは私がしました:
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:]
ほとんどの部分で機能しますが、テキスト部分に「@」が含まれていると失敗します。例:いつ:
t='@abc @def My email is red@hjk.com'
失敗します。@namesは最初にあり、@ namesの後にテキストがあり、@が含まれている可能性があります。
明らかに、最初にスペースを追加して、「@」のない最初の単語を見つけることができます。しかし、それはエレガントな解決策ではないようです。
これを解決するためのPythonの方法は何ですか?