HomeLập trìnhPythonCách xóa một...

Cách xóa một ký tự cụ thể khỏi chuỗi trong Python


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:

  1. 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
  2. Cách xóa nhiều ký tự khỏi chuỗi bằng lệnh replace() phương pháp
    1. Xóa nhiều ký tự bằng chuỗi phương thức
    2. Xóa nhiều ký tự bằng một for vòng
    3. Xóa nhiều ký tự bằng biểu thức chính quy
  3. 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
  4. Cách xóa nhiều ký tự khỏi chuỗi bằng lệnh translate() phương pháp
Đọc thêm  Sê-ri và DataFrame trong Python

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ột string.
  • 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ỏi string.
    • replacement là một đối số bắt buộc và đại diện cho chuỗi/ký tự mới sẽ thay thế cho character.
    • count là một đối số tùy chọn đại diện cho số lượng tối đa character lần xuất hiện bạn muốn xóa khỏi string. Nếu bạn không bao gồm countthì 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ủa character.

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.

Đọc thêm  Toán tử Modulo của Python - Biểu tượng % có nghĩa là gì trong Python? (Đã giải quyết)

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à 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 resub 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ự !? 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 thêm  Python .split() – Tách chuỗi trong Python

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 !? 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()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ẻ!



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status