Xóa ký tự trong chuỗi Python

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

  • old_string = 'h?ello, m?y? name? is ?nik!'
    new_string = old_string.replace['?', '']
    
    print[new_string]
    # Returns: hello, my name is nik!
    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ện

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ỗi

old_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

  1. Chúng tôi đã áp dụng. Phương thức
    old_string = 'h?ello, m?y? name? is ?nik!'
    new_string = old_string.replace['?', '']
    
    print[new_string]
    # Returns: hello, my name is nik!
    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!
    6
  2. Chúng tôi đã chỉ ra rằng chúng tôi muốn thay thế 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 bằng một chuỗi rỗng
  3. Chúng tôi đã gán chuỗi mới được sửa đổi này cho biến
    old_string = 'h?ello, m?y? name? is ?nik!'
    new_string = old_string.replace['?', '']
    
    print[new_string]
    # Returns: hello, my name is nik!
    8

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
    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!
    2 để trả về giá trị Unicode cho bất kỳ ký tự nào chúng tôi muốn thay thế
  • Chúng tôi ánh xạ giá trị này tới 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!
    3 để đảm bảo rằng nó sẽ xóa giá trị đó

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ình

Xó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 ta

a_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ống

Hã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?
0

Thư 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ên

Phầ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

Chủ Đề