Mam ciąg w formacie:Rozdzielanie łańcuchów w wymaganym formacie, sposób Pythonic? (Z lub w/o Regex)
t='@abc @def Hello this part is text'
chcę uzyskać to:
l=["abc", "def"]
s='Hello this part is text'
Zrobiłem to:
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:]
It działa w większości przypadków, ale kończy się niepowodzeniem, gdy część tekstowa ma znak "@". Np. Gdy:
t='@abc @def My email is [email protected]'
nie powiedzie się. Nazwiska @ są tam na początku i może być tekst po imionach, które mogą zawierać @.
Najwyraźniej mogę dołączyć początkowo spację i znaleźć pierwsze słowo bez "@". Ale to nie wydaje się być eleganckim rozwiązaniem.
Co to jest pytonowa metoda rozwiązania tego problemu?
dzięki za przedłużenie :-) Początkowo nie było dla mnie jasne, że może to być dowolna liczba słów. Ale miałem również problem ze znalezieniem właściwej składni dla wyrażeń regularnych, gdy próbowałem ponownie. Widzę więc, że anonimowa grupa jest teraz w środku, miałem ją na zewnątrz. – MrTopf
Czy chciałbyś wyjaśnić wyrażenie regularne? dlaczego znajduje zmienną liczbę "tagów" lub cokolwiek cokolwiek nazywa? – hasen
Dobrze grał Sir. Dzięki za dokładne wyjaśnienie. – bernie