Trong python 2 đối số thứ hai với phương pháp translate
phép bạn chỉ định ký tự để xóa
http://docs.python.org/2/library/stdtypes.html#str.translate
Ví dụ chương trình cho rằng bạn có thể sử dụng None
như một bảng dịch để chỉ xóa nhân vật:
>>> 'read this short text'.translate(None, 'aeiou')
'rd ths shrt txt'
(Bạn có thể nhận danh sách tất cả các chữ cái ASCII từ mô-đun chuỗi là string.letters
.)
Cập nhật: Python 3 cũng có một phương pháp translate
, mặc dù nó đòi hỏi một thiết lập hơi khác nhau:
from string import ascii_letters
tr_table = str.maketrans({c:None for c in ascii_letters})
'12345v'.transate(tr_table)
Đối với hồ sơ, sử dụng bảng dịch bằng Python 2 được nhiều, nhiều nhanh hơn so với tham gia/phương pháp lọc:
>>> timeit("''.join(filter(lambda c:not c.isalpha(), '12454v'))")
2.698641061782837
>>> timeit("''.join(filter(str.isdigit, '12454v'))")
1.9351119995117188
>>> timeit("'12454v'.translate(None, string.letters)", "import string")
0.38182711601257324
Tương tự như vậy bằng Python 3:
>>> timeit("'12454v'.translate(tr_table)", "import string; tr_table=str.maketrans({c:None for c in string.ascii_letters})")
0.6507143080000333
>>> timeit("''.join(filter(lambda c:not c.isalpha(), '12454v'))")
2.436105844999929
@kojiro Tôi đã sửa. –