Chuỗi trong Python là bất biến [không thể thay đổi]. Bởi vì điều này, hiệu ứng của
import re
line = re.sub['[!@#$]', '', line]
4 chỉ là để tạo ra một chuỗi mới, thay vì thay đổi cái cũ. Bạn cần phải sửa đổi [gán] nó cho import re
line = re.sub['[!@#$]', '', line]
5 để có biến đó lấy giá trị mới, với các ký tự đó bị xóa.Ngoài ra, cách bạn đang làm, nó sẽ là loại chậm, tương đối. Nó cũng có khả năng là một chút khó hiểu đối với các pythonators có kinh nghiệm, những người sẽ nhìn thấy một cấu trúc được lồng gấp đôi và suy nghĩ trong một khoảnh khắc mà một cái gì đó phức tạp hơn đang diễn ra.
Bắt đầu trong Python 2.6 và các phiên bản Python 2.x mới hơn *, thay vào đó bạn có thể sử dụng
import re
line = re.sub['[!@#$]', '', line]
6, [xem Python 3 Trả lời bên dưới]:Python 3 answer below]:line = line.translate[None, '!@#$']
hoặc thay thế biểu thức thông thường bằng
import re
line = re.sub['[!@#$]', '', line]
7import re
line = re.sub['[!@#$]', '', line]
Các nhân vật được đặt trong ngoặc tạo thành một lớp nhân vật. Bất kỳ ký tự nào trong
import re
line = re.sub['[!@#$]', '', line]
5 trong lớp đó đều được thay thế bằng tham số thứ hai thành import re
line = re.sub['[!@#$]', '', line]
9: một chuỗi trống.Python 3 Trả lời
Trong Python 3, chuỗi là Unicode. Bạn sẽ phải dịch một chút khác nhau. Kevpie đề cập đến điều này trong một bình luận về một trong những câu trả lời và nó được ghi nhận trong tài liệu cho
import re
line = re.sub['[!@#$]', '', line]
6.Khi gọi phương thức
translation_table = dict.fromkeys[map[ord, '!@#$'], None]
unicode_line = unicode_line.translate[translation_table]
1 của chuỗi Unicode, bạn không thể vượt qua tham số thứ hai mà chúng tôi đã sử dụng ở trên. Bạn cũng không thể vượt qua translation_table = dict.fromkeys[map[ord, '!@#$'], None]
unicode_line = unicode_line.translate[translation_table]
2 là tham số đầu tiên. Thay vào đó, bạn vượt qua một bảng dịch [thường là từ điển] là tham số duy nhất. Bảng này ánh xạ các giá trị thứ tự của các ký tự [nghĩa là kết quả của việc gọi translation_table = dict.fromkeys[map[ord, '!@#$'], None]
unicode_line = unicode_line.translate[translation_table]
3 trên chúng] đến các giá trị thứ tự của các ký tự sẽ thay thế chúng, hoặc tinh thần cho chúng tôi.Vì vậy, để thực hiện các điệu nhảy trên với một chuỗi unicode, bạn sẽ gọi một cái gì đó như
translation_table = dict.fromkeys[map[ord, '!@#$'], None]
unicode_line = unicode_line.translate[translation_table]
Ở đây
translation_table = dict.fromkeys[map[ord, '!@#$'], None]
unicode_line = unicode_line.translate[translation_table]
5 và translation_table = dict.fromkeys[map[ord, '!@#$'], None]
unicode_line = unicode_line.translate[translation_table]
6 được sử dụng để tạo ra một từ điển có chứa{ord['!']: None, ord['@']: None, ...}
Thậm chí đơn giản hơn, như một câu trả lời khác đặt ra, hãy tạo bảng dịch tại chỗ:
unicode_line = unicode_line.translate[{ord[c]: None for c in '!@#$'}]
Hoặc, như được đưa ra bởi Joseph Lee, tạo ra cùng một bảng dịch với
translation_table = dict.fromkeys[map[ord, '!@#$'], None]
unicode_line = unicode_line.translate[translation_table]
7:unicode_line = unicode_line.translate[str.maketrans['', '', '!@#$']]
* Để tương thích với Pythons trước đó, bạn có thể tạo bảng dịch "null" để vượt qua thay cho
translation_table = dict.fromkeys[map[ord, '!@#$'], None]
unicode_line = unicode_line.translate[translation_table]
2:import string
line = line.translate[string.maketrans['', ''], '!@#$']
Ở đây
translation_table = dict.fromkeys[map[ord, '!@#$'], None]
unicode_line = unicode_line.translate[translation_table]
9 được sử dụng để tạo bảng dịch, chỉ là một chuỗi chứa các ký tự có giá trị thứ tự 0 đến 255. Đôi khi chúng tôi muốn loại bỏ tất cả các lần xuất hiện của một ký tự khỏi một chuỗi. Có hai cách phổ biến để đạt được điều này.
Python loại bỏ ký tự khỏi chuỗi
- Sử dụng hàm thay thế chuỗi []
- Sử dụng hàm dịch []
Python loại bỏ ký tự khỏi chuỗi bằng cách sử dụng thay thế []
Chúng ta có thể sử dụng hàm thay thế chuỗi [] để thay thế một ký tự bằng một ký tự mới. Nếu chúng tôi cung cấp một chuỗi trống làm đối số thứ hai, thì ký tự sẽ bị xóa khỏi chuỗi. Lưu ý rằng chuỗi là bất biến trong Python, vì vậy hàm này sẽ trả về một chuỗi mới và chuỗi ban đầu sẽ không thay đổi.
s = 'abc12321cba'
print[s.replace['a', '']]
Đầu ra:
{ord['!']: None, ord['@']: None, ...}
0Python loại bỏ ký tự khỏi chuỗi bằng cách sử dụng dịch []
Chức năng Python Chuỗi dịch [] Thay thế từng ký tự trong chuỗi bằng bảng dịch đã cho. Chúng tôi phải chỉ định điểm mã Unicode cho ký tự và ‘không có cách thay thế để xóa nó khỏi chuỗi kết quả. Chúng ta có thể sử dụng hàm ord [] để có được điểm mã unicode của một ký tự.
s = 'abc12321cba'
print[s.translate[{ord['a']: None}]]
Đầu ra:
{ord['!']: None, ord['@']: None, ...}
0 Nếu bạn muốn thay thế nhiều ký tự, điều đó có thể được thực hiện dễ dàng bằng cách sử dụng trình lặp. Hãy cùng xem cách loại bỏ các ký tự ‘A,’ B, và ‘C, khỏi một chuỗi.s = 'abc12321cba'
print[s.translate[{ord[i]: None for i in 'abc'}]]
Đầu ra:
{ord['!']: None, ord['@']: None, ...}
2Loại bỏ khoảng trắng khỏi chuỗi
import re
line = re.sub['[!@#$]', '', line]
0Python loại bỏ dòng mới khỏi chuỗi
import re
line = re.sub['[!@#$]', '', line]
1Xóa con khỏi chuỗi
Chuỗi thay thế [] đối số hàm là chuỗi. Hãy để xem cách loại bỏ một từ khỏi một chuỗi.
import re
line = re.sub['[!@#$]', '', line]
2Đầu ra:
{ord['!']: None, ord['@']: None, ...}
3Xóa số lần được chỉ định
Chúng tôi cũng có thể vượt qua tham số thứ ba trong hàm thay thế [] để chỉ định số lần thay thế nên được thực hiện.
import re
line = re.sub['[!@#$]', '', line]
3Đầu ra:
{ord['!']: None, ord['@']: None, ...}
4Bạn có thể kiểm tra toàn bộ tập lệnh Python và nhiều ví dụ về Python từ Kho lưu trữ GitHub của chúng tôi.