Tôi có một chuỗi trong các định dạng:Tách chuỗi theo định dạng bắt buộc, cách Pythonic? (Có hoặc w/o Regex)
t='@abc @def Hello this part is text'
Tôi muốn có được điều này:
l=["abc", "def"]
s='Hello this part is text'
Tôi đã làm điều này:
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:]
Nó làm việc cho hầu hết các phần, nhưng nó không thành công khi phần văn bản có '@'. Ví dụ: khi:
t='@abc @def My email is [email protected]'
không thành công. Các tên @ có trong đầu và có thể có văn bản sau @names, có thể chứa @.
Rõ ràng tôi có thể nối thêm với không gian và tìm ra từ đầu tiên mà không có '@'. Nhưng đó không phải là một giải pháp thanh lịch.
Cách giải quyết vấn đề này là gì?
cảm ơn bạn đã mở rộng nó :-) Ban đầu tôi không rõ ràng rằng nó có thể là bất kỳ số lượng từ nào. Nhưng tôi cũng gặp khó khăn khi tìm cú pháp đúng cho regexp khi thử lại. Vì vậy, tôi thấy rằng nhóm vô danh hiện đang ở bên trong, tôi đã có nó bên ngoài. – MrTopf
bạn có muốn giải thích về regex không? tại sao nó tìm thấy số lượng thay đổi của "thẻ" hoặc bất cứ điều gì @ được gọi là gì? – hasen
Sir được chơi tốt. Cảm ơn bạn đã giải thích kỹ lưỡng. – bernie