Khi viết mã bằng Python, có thể đôi khi bạn cần xóa một ký tự khỏi chuỗi.
Việc xóa các ký tự khỏi chuỗi rất hữu ích nếu bạn đang làm việc với đầu vào do người dùng tạo và cần xóa dữ liệu cũng như xóa các ký tự không mong muốn.
Cụ thể, bạn có thể chỉ cần loại bỏ một lần xuất hiện của một ký tự hoặc thậm chí tất cả các lần xuất hiện của một ký tự khỏi một chuỗi.
Python cung cấp nhiều cách để giúp bạn làm điều này.
Hai trong số những cách phổ biến nhất để xóa ký tự khỏi chuỗi trong Python là:
- sử dụng
replace()
phương pháp chuỗi - sử dụng
translate()
phương pháp chuỗi
Khi sử dụng một trong hai phương thức, bạn có thể chỉ định (các) ký tự bạn muốn xóa khỏi chuỗi.
Cả hai phương pháp đều thay thế một ký tự bằng một giá trị mà bạn chỉ định. Và nếu bạn chỉ định một ký tự trống thay vào đó, ký tự bạn muốn xóa sẽ bị xóa mà không cần thay thế.
Một điều cần lưu ý khi sử dụng các phương thức này là chuỗi gốc không bị thay đổi vì chuỗi là bất biến. Thay vào đó, cả hai phương thức đều trả về một chuỗi mới đã sửa đổi không chứa các ký tự mà bạn muốn xóa.
Trong bài viết này, bạn sẽ học cách sử dụng cả hai phương pháp để xóa một ký tự hoặc nhiều ký tự khỏi một chuỗi với sự trợ giúp của các ví dụ viết mã.
Đây là những gì chúng tôi sẽ đề cập:
- Cách xóa một ký tự cụ thể khỏi Chuỗi bằng cách sử dụng
replace()
phương pháp - Cách xóa nhiều ký tự khỏi chuỗi bằng lệnh
replace()
phương pháp- Xóa nhiều ký tự bằng chuỗi phương thức
- Xóa nhiều ký tự bằng một
for
vòng - Xóa nhiều ký tự bằng biểu thức chính quy
- Cách xóa một ký tự cụ thể khỏi chuỗi bằng cách sử dụng
translate()
phương pháp - Cách xóa nhiều ký tự khỏi chuỗi bằng lệnh
translate()
phương pháp
Hãy đi sâu vào!
Cách xóa một ký tự cụ thể khỏi chuỗi trong Python bằng cách sử dụng replace()
Phương pháp
Cú pháp chung cho replace()
phương pháp trông giống như sau:
string.replace( character, replacement, count)
Hãy chia nhỏ nó ra:
- Bạn nối thêm
replace()
phương pháp trên mộtstring
. - Các
replace()
phương pháp chấp nhận ba đối số:character
là đối số bắt buộc và đại diện cho ký tự cụ thể mà bạn muốn xóa khỏistring
.replacement
là một đối số bắt buộc và đại diện cho chuỗi/ký tự mới sẽ thay thế chocharacter
.count
là một đối số tùy chọn đại diện cho số lượng tối đacharacter
lần xuất hiện bạn muốn xóa khỏistring
. Nếu bạn không bao gồmcount
thì theo mặc định,replace()
phương pháp sẽ loại bỏ tất cả các lần xuất hiện củacharacter
.
Các replace()
phương thức không sửa đổi chuỗi gốc. Thay vào đó, giá trị trả về của nó là một bản sao của chuỗi gốc không có các ký tự bạn muốn xóa.
Bây giờ hãy nhìn replace()
trong hành động!
Giả sử bạn có chuỗi sau và bạn muốn xóa tất cả các dấu chấm than:
my_string = "Hi! I! Love! Python!"
Đây là cách bạn sẽ loại bỏ tất cả các lần xuất hiện của !
nhân vật:
my_string = "Hi! I! Love! Python!"
my_new_string = my_string.replace("!", "")
print(my_new_string)
# output
# Hi I Love Python
Trong ví dụ trên, tôi đã thêm replace()
phương pháp để my_string
.
Sau đó tôi lưu trữ kết quả trong một biến mới có tên my_new_string
.
Hãy nhớ rằng, chuỗi là bất biến. Chuỗi ban đầu không thay đổi – replace()
trả về một chuỗi mới và không sửa đổi chuỗi ban đầu.
Tôi đã xác định rằng tôi muốn xóa !
nhân vật và chỉ ra rằng tôi muốn thay thế !
với một ký tự rỗng.
Tôi cũng không sử dụng count
lập luận, vì vậy replace()
thay thế tất cả các sự xuất hiện của !
ký tự với một ký tự trống.
Chuỗi ban đầu được lưu trữ trong một biến my_string
có bốn lần xuất hiện của !
nhân vật.
Nếu tôi chỉ muốn xóa ba lần xuất hiện của ký tự và không phải tất cả chúng, tôi sẽ sử dụng count
đối số và chuyển một giá trị của 3
để chỉ định số lần tôi muốn thay thế ký tự:
my_string = "Hi! I! love! Python!"
my_new_string = my_string.replace("!", "", 3)
print(my_new_string)
# output
# Hi I love Python!
Cách xóa nhiều ký tự khỏi một chuỗi trong Python bằng cách sử dụng replace()
Phương pháp
Có thể sẽ có lúc bạn cần thay thế nhiều ký tự trong một chuỗi.
Trong các phần sau, bạn sẽ thấy ba cách bạn có thể đạt được điều này bằng cách sử dụng replace()
phương pháp.
Xóa nhiều ký tự bằng chuỗi phương thức
Một cách bạn có thể đạt được điều này là xâu chuỗi replace()
phương pháp như vậy:
my_string = "Hi!? I!? love!? Python!?"
my_new_string = my_string.replace("!","").replace("?","")
print(my_new_string)
# output
# Hi I love Python
Điều đó nói rằng, cách loại bỏ ký tự này có thể khá khó đọc.
Xóa nhiều ký tự bằng A for
Vòng
Một cách khác để thực hiện điều này là sử dụng replace()
phương pháp bên trong một for
vòng:
my_string = "Hi!? I!? love!? Python!?"
replacements = [('!', ''), ('?', '')]
for char, replacement in replacements:
if char in my_string:
my_string = my_string.replace(char, replacement)
print(my_string)
# output
# Hi I love Python
Lần đầu tiên tôi tạo một chuỗi chứa hai ký tự mà tôi muốn xóa, !
và ?
và lưu trữ nó trong biến my_string
.
Tôi đã lưu trữ các ký tự mà tôi muốn thay thế, cùng với các ký tự thay thế của chúng, trong danh sách các bộ có tên replacements
– Tôi muốn thay thế !
với một chuỗi rỗng và ?
với một chuỗi rỗng.
Sau đó, tôi đã sử dụng một for
vòng lặp để lặp qua danh sách các bộ dữ liệu (nếu bạn cần xem lại for
các vòng lặp, hãy đọc bài viết này).
Bên trong for
vòng lặp, tôi đã sử dụng in
toán tử để kiểm tra xem các ký tự có nằm trong chuỗi hay không. Và nếu có, tôi đã sử dụng replace()
phương pháp thay thế chúng.
Cuối cùng, tôi đã gán lại biến.
Xóa nhiều ký tự bằng biểu thức chính quy
Và một cách khác để thực hiện điều này là sử dụng thư viện biểu thức chính quy re
và sub
phương pháp.
Trước tiên, bạn cần nhập thư viện:
import re
Sau đó, chỉ định nhóm ký tự bạn muốn xóa (trong trường hợp này là ký tự !
và ?
các ký tự), cùng với các ký tự mà bạn muốn thay thế chúng. Trong trường hợp này, ký tự thay thế là một ký tự trống:
import re
my_string = "Hi!? I!? love!? Python!?"
my_new_string = re.sub('[!?]',"",my_string)
print(my_new_string)
# output
# Hi I love Python
Cách xóa một ký tự cụ thể khỏi chuỗi trong Python bằng cách sử dụng translate()
Phương pháp
Tương tự với replace()
phương pháp, translate()
loại bỏ các ký tự từ một chuỗi.
Như đã nói, translate()
phương pháp phức tạp hơn một chút và không thân thiện với người mới bắt đầu nhất.
Các replace()
là giải pháp đơn giản nhất để sử dụng khi bạn cần xóa các ký tự khỏi chuỗi.
Khi sử dụng translate()
phương pháp thay thế một ký tự trong một chuỗi, bạn cần tạo một bảng dịch ký tự, trong đó translate()
sử dụng nội dung của bảng để thay thế các ký tự.
Bảng dịch là một từ điển ánh xạ khóa-giá trị và mỗi khóa được thay thế bằng một giá trị.
Bạn có thể dùng ord()
để lấy giá trị Unicode của ký tự rồi ánh xạ giá trị đó sang ký tự khác.
Phương thức này trả về một chuỗi mới trong đó mỗi ký tự từ chuỗi cũ được ánh xạ tới một ký tự từ bảng dịch.
Giá trị trả về là một chuỗi mới.
Hãy xem một ví dụ sử dụng cùng mã từ các phần trước:
my_string = "Hi! I! love! Python!"
my_new_string = my_string.translate( { ord("!"): None } )
print(my_new_string)
# output
# Hi I love Python
Trong ví dụ trên, tôi đã sử dụng ord()
để trả về giá trị Unicode được liên kết với ký tự tôi muốn thay thế, trong trường hợp này là !
.
Sau đó, tôi đã ánh xạ giá trị Unicode đó tới None
– một từ khác cho không có gì hoặc trống rỗng – mà đảm bảo loại bỏ nó. Cụ thể, nó đã thay thế mọi trường hợp của !
nhân vật với một None
giá trị.
Cách xóa nhiều ký tự khỏi một chuỗi trong Python bằng cách sử dụng translate()
Phương pháp
Điều gì sẽ xảy ra nếu bạn cần thay thế nhiều hơn một ký tự bằng cách sử dụng translate()
phương pháp? Đối với điều đó, bạn có thể sử dụng một trình vòng lặp như vậy:
my_string = "Hi!? I!? love!? Python!?"
my_new_string = my_string.translate( { ord(i): None for i in '!?'} )
print(my_new_string)
# output
# Hi I love Python
Trong ví dụ trên, tôi đã thay thế cả hai !
và ?
ký tự có giá trị None
bằng cách sử dụng một trình vòng lặp lặp qua các ký tự mà tôi muốn xóa.
Các translate()
phương pháp kiểm tra xem mỗi ký tự trong my_string
bằng dấu chấm than hoặc dấu chấm hỏi. Nếu đúng như vậy, thì nó sẽ được thay thế bằng None
.
Phần kết luận
Hy vọng bài viết này đã giúp bạn hiểu cách xóa ký tự khỏi chuỗi trong Python bằng cách sử dụng công cụ tích hợp sẵn. replace()
và translate()
các phương thức chuỗi.
Cảm ơn bạn đã đọc và chúc bạn mã hóa vui vẻ!