Xóa ký tự khỏi chuỗi Python

Trong bài viết này, chúng ta sẽ thảo luận cách xóa các ký tự khỏi chuỗi ở vị trí chỉ mục cụ thể hoặc trong một phạm vi chỉ mục nhất định

Chúng ta có thể xóa các ký tự khỏi chuỗi bằng cách cắt chuỗi thành nhiều phần rồi nối lại các phần đó

cắt chuỗi

Trong chuỗi Python là bất biến i. e. chúng ta không thể sửa đổi các đối tượng chuỗi. Do đó, khi chúng ta cắt một chuỗi, nó sẽ trả về một đối tượng chuỗi mới thay vì sửa đổi chuỗi ban đầu

Chúng ta có thể cắt một chuỗi bằng toán tử [] i. e

quảng cáo

stringObject[ start : stop : interval]

Nó trả về một đối tượng chuỗi mới chứa các phần của chuỗi đã cho i. e. nó chọn một phạm vi từ đầu đến dừng-1 với kích thước bước nhất định i. e. khoảng thời gian

Hãy sử dụng cắt để loại bỏ các ký tự khỏi chuỗi theo chỉ mục

Đọc thêm

  • Xóa N ký tự cuối cùng khỏi chuỗi trong Python
  • con trăn. Kiểm tra xem có chuỗi nào trống trong danh sách không?
  • con trăn. Thay thế các chuỗi con trong một chuỗi bằng regex
  • con trăn. Cách tìm khóa theo giá trị trong từ điển?

Xóa một ký tự khỏi chuỗi tại chỉ mục cụ thể

Giả sử chúng ta có một đối tượng chuỗi i. e

strObj = "This is a sample string"

Hãy xóa ký tự ở chỉ số 5 trong đối tượng chuỗi i đã tạo ở trên. e

index = 5
# Slice string to remove character at index 5
if len(strObj) > index:
    strObj = strObj[0 : index : ] + strObj[index + 1 : :]

đầu ra

Modified String :  This s a sample string

Nó đã xóa ký tự ở chỉ số 5 tôi. e. 'i' từ 'is' trong chuỗi trên

Vì chúng ta không thể sửa đổi các đối tượng chuỗi bất biến, nên để mô phỏng hiệu ứng loại bỏ, chúng ta chỉ chọn chuỗi con từ chỉ số [0 đến chỉ mục) & [chỉ mục + 1 đến cuối), sau đó hợp nhất các chuỗi con đó và gán nó trở lại ban đầu . Thủ đoạn táo tợn 😉

Bây giờ, hãy sử dụng thủ thuật tương tự để đạt được những thứ khác mà tôi. e

Xóa ký tự đầu tiên khỏi chuỗi

Chỉ cần chọn phạm vi từ chỉ mục 1 đến cuối và gán nó trở lại chuỗi gốc i. e

strObj = "This is a sample string"

# Slice string to remove first character
strObj = strObj[1 : : ]

print('Modified String : ' , strObj)

đầu ra

Modified String :  his is a sample string

Xóa ký tự cuối cùng khỏi chuỗi

Chỉ cần chọn phạm vi từ chỉ mục 0 đến kết thúc - 1 và gán nó trở lại chuỗi gốc i. e

strObj = "This is a sample string"

# Slice string to remove last character
strObj = strObj[:-1:]

đầu ra

Modified String :  This is a sample strin

Xóa nhiều ký tự khỏi một chuỗi trong phạm vi chỉ mục đã cho

Chúng ta có thể sử dụng thủ thuật tương tự để xóa nhiều ký tự khỏi một chuỗi nhất định cho một phạm vi chỉ mục nhất định

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ế()

Xóa ký tự khỏi chuỗi Python

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

________số 8_______

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 loại bỏ nó

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