Trong bài đăng này, bạn sẽ học cách sử dụng Python để xóa một ký tự khỏi chuỗi. Bạn sẽ học cách thực hiện việc này với phương thức .replace[]
của Python cũng như phương thức .translate[]
của Python. Cuối cùng, bạn sẽ tìm hiểu cách giới hạn số lượng ký tự bị xóa [giả sử, nếu bạn chỉ muốn xóa x số lượng ký tự đầu tiên của một ký tự]
Câu trả lời nhanh. sử dụng chuỗi. thay thế[]
Mục lục
Tại sao lại xóa ký tự khỏi chuỗi trong Python?
Khi bạn tải xuống dữ liệu từ các nguồn khác nhau, bạn sẽ thường nhận được dữ liệu rất lộn xộn. Phần lớn thời gian của bạn sẽ được dành để làm sạch dữ liệu đó và chuẩn bị cho phân tích. Một phần của quá trình chuẩn bị dữ liệu đó sẽ làm sạch chuỗi của bạn và có thể liên quan đến việc xóa một số ký tự nhất định
Do đây là một thách thức rất phổ biến nên hướng dẫn này được phát triển để giúp bạn trong hành trình hướng tới phân tích dữ liệu dễ dàng hơn. Bắt đầu nào
Sử dụng Hàm Thay thế để Xóa Ký tự khỏi Chuỗi trong Python
Python được tích hợp sẵn một số phương thức chuỗi. Một trong những phương pháp này là phương pháp .replace[]
, cho phép bạn thay thế các phần của chuỗi của mình. Chúng ta hãy xem nhanh cách phương thức được viết
str.replace[old, new, count]
Khi bạn thêm một .replace[]
vào một chuỗi, bạn xác định các tham số sau
0. chuỗi mà bạn muốn thay thế,old_string = 'h?ello, m?y? name? is ?nik!' new_string = old_string.replace['?', ''] print[new_string] # Returns: hello, my name is nik!
1. chuỗi bạn muốn thay thế bằng vàold_string = 'h?ello, m?y? name? is ?nik!' new_string = old_string.replace['?', ''] print[new_string] # Returns: hello, my name is nik!
2. số lần thay thế bạn muốn thực hiệnold_string = 'h?ello, m?y? name? is ?nik!' new_string = old_string.replace['?', ''] print[new_string] # Returns: hello, my name is nik!
Bây giờ bạn đã học cách viết phương thức .replace[]
bằng Python, hãy xem một ví dụ. Bạn sẽ được cung cấp một chuỗi và sẽ muốn xóa tất cả các ký tự đánh dấu
old_string = 'h?ello, m?y? name? is ?nik!'
new_string = old_string.replace['?', '']
print[new_string]
# Returns: hello, my name is nik!
4 trong chuỗiold_string = 'h?ello, m?y? name? is ?nik!'
new_string = old_string.replace['?', '']
print[new_string]
# Returns: hello, my name is nik!
Hãy xem những gì chúng ta đã làm ở đây để xóa các ký tự khỏi chuỗi trong Python
- Chúng tôi đã áp dụng. Phương thức
5 cho chuỗi của chúng ta,old_string = 'h?ello, m?y? name? is ?nik!' new_string = old_string.replace['?', ''] print[new_string] # Returns: hello, my name is nik!
6old_string = 'h?ello, m?y? name? is ?nik!' new_string = old_string.replace['?', ''] print[new_string] # Returns: hello, my name is nik!
- Chúng tôi đã chỉ ra rằng chúng tôi muốn thay thế ký tự
4 bằng một chuỗi rỗngold_string = 'h?ello, m?y? name? is ?nik!' new_string = old_string.replace['?', ''] print[new_string] # Returns: hello, my name is nik!
- Chúng tôi đã gán chuỗi mới được sửa đổi này cho biến
8old_string = 'h?ello, m?y? name? is ?nik!' new_string = old_string.replace['?', ''] print[new_string] # Returns: hello, my name is nik!
Bạn có thể xem tại đây, việc xóa các ký tự khỏi chuỗi trong Python dễ dàng như thế nào
Bây giờ, hãy tìm hiểu cách sử dụng phương thức chuỗi .translate[]
của Python để thực hiện việc này
Sử dụng Hàm Dịch để Xóa Ký tự khỏi Chuỗi trong Python
Tương tự như ví dụ trên, chúng ta có thể sử dụng phương thức chuỗi .translate[]
của Python để xóa các ký tự khỏi chuỗi
Phương pháp này phức tạp hơn một chút và nói chung, phương pháp .replace[]
là phương pháp ưa thích. Lý do cho điều này là bạn cần xác định một bảng dịch trước khi thực sự có thể thay thế bất kỳ thứ gì. Vì bước này thường có thể quá mức cần thiết và tẻ nhạt khi chỉ thay thế một ký tự duy nhất. Do đó, chúng ta có thể sử dụng hàm ord[] để lấy giá trị Unicode của một ký tự để đơn giản hóa quy trình này
Hãy xem làm thế nào điều này có thể được thực hiện với cùng một ví dụ như trên
old_string = 'h?ello, m?y? name? is ?nik!'
new_string = old_string.translate[{ord['?']:None}]
print[new_string]
# Returns: hello, my name is nik!
Hãy khám phá những gì chúng tôi đã làm ở đây
- Chúng tôi sử dụng hàm
2 để trả về giá trị Unicode cho bất kỳ ký tự nào chúng tôi muốn thay thếold_string = 'h?ello, m?y? name? is ?nik!' new_string = old_string.translate[{ord['?']:None}] print[new_string] # Returns: hello, my name is nik!
- Chúng tôi ánh xạ giá trị này tới giá trị
3 để đảm bảo rằng nó sẽ xóa giá trị đóold_string = 'h?ello, m?y? name? is ?nik!' new_string = old_string.translate[{ord['?']:None}] print[new_string] # Returns: hello, my name is nik!
Bạn có thể thấy ở đây rằng phương pháp này phức tạp hơn một chút so với phương pháp trước đây bạn đã học
Chỉ xóa n Số ký tự khỏi Chuỗi trong Python
Có thể đôi khi bạn chỉ muốn xóa một số ký tự nhất định khỏi một chuỗi trong Python. Rất may, phương thức .replace[]
của Python cho phép chúng ta dễ dàng thực hiện việc này bằng cách sử dụng tham số
old_string = 'h?ello, m?y? name? is ?nik!'
new_string = old_string.replace['?', '']
print[new_string]
# Returns: hello, my name is nik!
2. Bằng cách chuyển một số khác 0 vào tham số này, chúng ta có thể chỉ định số lượng ký tự chúng ta muốn xóa trong PythonĐiều này có thể rất hữu ích khi bạn nhận được một chuỗi mà bạn chỉ cần xóa lần lặp đầu tiên của một ký tự, nhưng các ký tự khác có thể hợp lệ
Hãy xem xét một ví dụ
old_string = 'h?ello, my name is nik! how are you?'
new_string = old_string.replace['?', '', 1]
print[new_string]
# Returns: hello, my name is nik! how are you?
Chúng ta có thể thấy ở đây rằng bằng cách chuyển vào
old_string = 'h?ello, m?y? name? is ?nik!'
new_string = old_string.translate[{ord['?']:None}]
print[new_string]
# Returns: hello, my name is nik!
6, chỉ có sự thay thế đầu tiên được thực hiện. Do đó, chúng tôi chỉ có thể xóa một ký tự trong chuỗi Python của mìnhXóa nhiều ký tự khỏi một chuỗi trong Python
Cũng có thể đôi khi bạn muốn thay thế nhiều ký tự khác nhau từ một chuỗi trong Python. Mặc dù bạn có thể xâu chuỗi phương thức một cách đơn giản, nhưng điều này lặp đi lặp lại một cách không cần thiết và khó đọc
Hãy xem cách chúng ta có thể lặp qua một chuỗi các ký tự khác nhau để xóa các ký tự đó khỏi một chuỗi trong Python
Lý do chúng ta không cần lặp qua danh sách các chuỗi là bản thân các chuỗi có thể lặp lại. Chúng ta có thể truyền vào một danh sách các ký tự, nhưng chúng ta không cần. Hãy xem một ví dụ mà chúng ta muốn thay thế cả ký tự
old_string = 'h?ello, m?y? name? is ?nik!'
new_string = old_string.replace['?', '']
print[new_string]
# Returns: hello, my name is nik!
4 và old_string = 'h?ello, m?y? name? is ?nik!'
new_string = old_string.translate[{ord['?']:None}]
print[new_string]
# Returns: hello, my name is nik!
8 từ chuỗi ban đầu của chúng taa_string = 'h?ello, my name is nik! how are you?'
for character in '!?':
a_string = a_string.replace[character, '']
print[a_string]
# hello, my name is nik how are you
Một điều bạn sẽ nhận thấy ở đây là chúng tôi đang thay thế chuỗi bằng chính nó. Nếu chúng tôi không làm điều này [và thay vào đó, thay thế chuỗi và gán nó cho một biến khác], cuối cùng chúng tôi sẽ chỉ thay thế một ký tự duy nhất
Chúng ta cũng có thể thực hiện việc này bằng cách sử dụng thư viện biểu thức chính quy
old_string = 'h?ello, m?y? name? is ?nik!'
new_string = old_string.translate[{ord['?']:None}]
print[new_string]
# Returns: hello, my name is nik!
9. Chúng ta có thể chuyển vào một nhóm ký tự để loại bỏ và thay thế chúng bằng một chuỗi trốngHãy xem làm thế nào chúng ta có thể làm điều này
import re
old_string = 'h?ello, my name is nik! how are you?'
new_string = re.sub['[!?]', '', old_string]
print[new_string]
# Returns: hello, my name is nik how are you
Những gì chúng tôi đã làm ở đây là chuyển vào một chuỗi chứa một lớp ký tự, nghĩa là nó sẽ nhận bất kỳ ký tự nào có trong dấu ngoặc vuông
old_string = 'h?ello, my name is nik! how are you?'
new_string = old_string.replace['?', '', 1]
print[new_string]
# Returns: hello, my name is nik! how are you?
0Thư viện
old_string = 'h?ello, m?y? name? is ?nik!'
new_string = old_string.translate[{ord['?']:None}]
print[new_string]
# Returns: hello, my name is nik!
9 giúp bạn dễ dàng chuyển vào một số ký tự khác nhau mà bạn muốn thay thế và loại bỏ nhu cầu chạy vòng lặp for. Điều này có thể hiệu quả hơn khi độ dài chuỗi của bạn tăng lênPhần kết luận
Trong bài đăng này, bạn đã học cách xóa các ký tự khỏi một chuỗi trong Python bằng cách sử dụng phương thức chuỗi .replace[]
, phương thức chuỗi .translate[]
, cũng như sử dụng biểu thức chính quy trong
old_string = 'h?ello, m?y? name? is ?nik!'
new_string = old_string.translate[{ord['?']:None}]
print[new_string]
# Returns: hello, my name is nik!
9