Tôi có một chuỗi. Làm cách nào để xóa tất cả văn bản sau một ký tự nhất định? (Trong trường hợp này ...
)
Các văn bản sau sẽ ...
thay đổi vì vậy tôi đó là lý do tại sao tôi muốn loại bỏ tất cả các ký tự sau một nhất định.Làm thế nào để loại bỏ tất cả các ký tự sau một ký tự cụ thể trong python?
Trả lời
chia trên phân cách của bạn cùng một lúc nhất, và lấy miếng đầu tiên :
sep = '...'
rest = text.split(sep, 1)[0]
Bạn không nói điều gì sẽ xảy ra nếu trình tách không có mặt. Cả hai giải pháp này và Alex sẽ trả về toàn bộ chuỗi trong trường hợp đó.
Yêu cầu là "xóa tất cả văn bản sau" dấu phân cách chứ không phải "nhận" văn bản đó, vì vậy tôi nghĩ bạn muốn [0], không phải [-1], trong giải pháp tuyệt vời khác của bạn. –
Làm việc một cách hoàn hảo cảm ơn, như tôi chắc chắn Ayman & Alex đã làm là tốt, vì vậy cảm ơn tất cả. – Solihull
Sử dụng rsplit() nếu bạn cần chia cho một ký tự bắt đầu từ cuối chuỗi. – Samuel
Nếu không có một RE (mà tôi giả định là những gì bạn muốn):
def remafterellipsis(text):
where_ellipsis = text.find('...')
if where_ellipsis == -1:
return text
return text[:where_ellipsis + 3]
hay, với một RE:
import re
def remwithre(text, there=re.compile(re.escape('...')+'.*')):
return there.sub('', text)
Có thể muốn sử dụng sep = '...' như một kwarg và sử dụng len (sep) thay vì mã hóa cứng 3 để làm cho nó hơi tương lai hơn bằng chứng. – cdleary
Đúng, nhưng sau đó bạn cần phải biên dịch lại RE trên mỗi cuộc gọi, do đó hiệu suất sẽ chịu cho giải pháp RE (không có sự khác biệt thực sự đối với giải pháp không RE). Một số tổng quát là miễn phí, một số không phải là ... ;-) –
@Alex - Cảm ơn bạn đã thử nghiệm các giải pháp! –
Giả sử dấu phân cách của bạn là '...', nhưng nó có thể là bất kỳ chuỗi nào.
text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')
>>> print head
some string
Nếu không tìm thấy dấu tách, head
sẽ chứa tất cả chuỗi gốc.
Chức năng phân vùng đã được thêm vào trong Python 2.5.
phân vùng (...) S.partition (tháng chín) -> (đầu, tháng chín, đuôi)
Searches for the separator sep in S, and returns the part before it, the separator itself, and the part after it. If the separator is not found, returns S and two empty strings.
Tuy nhiên, một giải pháp tuyệt vời khác - chúng ta vi phạm TOOOWTDI? -) Có thể đáng để chạy kiểm tra thời gian ... –
.partition thắng - 0,756 usec mỗi vòng lặp, so với 1.13 cho .split (định dạng nhận xét không thực sự cho phép tôi hiển thị các bài kiểm tra chính xác, nhưng tôi đang sử dụng văn bản và dấu tách @ Ayman) - vì vậy, +1 cho @ Ayman's câu trả lời! –
và btw, để hoàn thành, giải pháp dựa trên RE là 2,54 usec, tức là, chậm hơn so với @ Ayman hoặc @ Ned's. –
một cách dễ dàng bằng thủ tục re sẽ
import re, clr
text = 'some string... this part will be removed.'
text= re.search(r'(\A.*)\.\.\..+',url,re.DOTALL|re.IGNORECASE).group(1)
// text = some string
Nếu bạn muốn xóa mọi thứ sau lần xuất hiện cuối cùng của dấu tách trong chuỗi, tôi thấy điều này hoạt động tốt:
<separator>.join(string_to_split.split(<separator>)[:-1])
Ví dụ, nếu string_to_split
là một con đường như root/location/child/too_far.exe
và bạn chỉ muốn các đường dẫn thư mục, bạn có thể chia nhỏ bởi "/".join(string_to_split.split("/")[:-1])
và bạn sẽ nhận được root/location/child
Ngoài ra, bạn có thể thay đổi -1 đó thành bất kỳ chỉ mục nào là sự xuất hiện mà tại đó bạn thả văn bản. – theannouncer
- 1. Làm thế nào để xóa tất cả các ký tự sau một ký tự trong chuỗi?
- 2. Trong Python 2.4, làm thế nào tôi có thể loại bỏ các ký tự sau ';'?
- 3. Loại bỏ tất cả các ký tự khoảng trắng trừ ""
- 4. PHP loại bỏ tất cả các ký tự trước khi chuỗi cụ thể
- 5. làm thế nào để loại bỏ ký tự từ NSString sau NSString cụ
- 6. Notepad ++ Cách xóa tất cả ký tự đứng trước một ký tự cụ thể
- 7. Loại bỏ tất cả mọi thứ sau khi nhân vật (và cũng có thể ký tự)
- 8. MySQL nhận được tất cả các ký tự trước ký tự cụ thể
- 9. Java: loại bỏ tất cả các ký tự sau thời điểm
- 10. Làm thế nào để loại bỏ tất cả các ký tự trống trong một chuỗi trong Erlang?
- 11. preg_replace để loại bỏ các ký tự không in dường như xóa tất cả các ký tự ngoài cũng như
- 12. Làm thế nào để loại bỏ các ký tự không thể in/vô hình trong ruby?
- 13. cách xóa tất cả các cá thể của một ký tự cụ thể khỏi một chuỗi
- 14. Làm thế nào để bạn loại bỏ tất cả các ký tự chữ cái từ một chuỗi?
- 15. Làm thế nào bạn có thể loại bỏ các ký tự trùng lặp trong một chuỗi?
- 16. Xóa ký tự sau ký tự cụ thể trong chuỗi, sau đó xóa chuỗi con?
- 17. Trích xuất tất cả các từ giữa hai từ cụ thể trong một vector ký tự
- 18. Strip tất cả nhưng trước tiên 5 ký tự - Python
- 19. xóa dữ liệu trong ô sau ký tự cụ thể
- 20. Javascript: Thay thế các ký tự sau _
- 21. truy vấn để loại bỏ tất cả các ký tự sau dấu phẩy cuối cùng trong chuỗi
- 22. Làm thế nào để sắp xếp một vector ký tự theo một thứ tự cụ thể?
- 23. VIM: Xóa tất cả các ký tự trước khi từ cụ thể cho tất cả các dòng trong một file
- 24. Làm thế nào để loại bỏ một số ký tự từ chuỗi của tôi
- 25. loại bỏ tất cả các ký tự đặc biệt trong java
- 26. Loại bỏ ký tự newline từ InputStream
- 27. Làm thế nào để ngăn chặn tự động thoát các ký tự đặc biệt trong Python
- 28. Thay thế tất cả các ký tự khoảng trắng
- 29. Làm thế nào tôi có thể loại bỏ các ký tự NULL từ chuỗi
- 30. Làm thế nào để lặp qua tất cả các ký tự ASCII trong Bash?
Nếu bạn không chắc chắn rằng nó có ý nghĩa, sau đó cập nhật câu hỏi của bạn để cung cấp các ví dụ cụ thể về những gì bạn muốn làm. –