Xóa Ký Tự Đặc Biệt trong Chuỗi Python | Laptrinhcanban.com

HOME › >>

Xóa Ký Tự Đặc Biệt trong Chuỗi Python

Hướng dẫn cách xóa ký tự đặc biệt trong chuỗi Python. Khi làm việc với dữ liệu văn bản trong lập trình Python, đôi khi bạn có thể cần xóa các ký tự đặc biệt khỏi chuỗi. Các ký tự đặc biệt có thể là dấu cách, ký tự đặc biệt, hoặc ký tự không in được hiển thị như dấu xuống dòng. Trong bài viết này, chúng ta sẽ tìm hiểu cách thực hiện xóa ký tự đặc biệt khỏi chuỗi trong Python.

Sử dụng vòng lặp để xóa ký tự đặc biệt

Một cách để xóa các ký tự đặc biệt khỏi chuỗi là sử dụng vòng lặp để duyệt qua từng ký tự trong chuỗi và kiểm tra xem ký tự đó có thuộc vào danh sách các ký tự đặc biệt cần xóa hay không. Dưới đây là một ví dụ:

text = "Hello, World! This is a test string. \n It contains special characters."
special_characters = [',', '!', '\n']
cleaned_text = ""

for char in text:
if char not in special_characters:
cleaned_text += char

print(cleaned_text)

Kết quả của mã trên sẽ là chuỗi đã được xóa các ký tự đặc biệt:

Hello World This is a test string  It contains special characters

Trong ví dụ này, chúng ta sử dụng một vòng lặp để duyệt qua từng ký tự trong chuỗi text, và chỉ thêm những ký tự không thuộc danh sách special_characters vào chuỗi cleaned_text.

Sử dụng biểu thức chính quy (regular expressions) để xóa ký tự đặc biệt

Chúng ta cũng có thể sử dụng RegEx với hàm re.sub() trong Python để xóa ký tự đặc biệt trong chuỗi Python.

Hàm re.sub() trong Python vốn được sử dụng để tìm một chuỗi ký tự có định dạng chỉ định và thay thế chuỗi đó bằng một chuỗi khác. Ứng dụng re.sub(), chúng ta có thể tìm ra tất cả các ký tự đặc biệt trong chuỗi, sau đó xóa hết chúng đi. Kết quả sẽ chỉ còn các ký tự bình thường sẽ ở lại trong chuỗi mà thôi.

Tuy nhiên trong Python không có một mẫu RegEx nào để miêu tả các ký tự đặc biệt cả, mà chỉ có mẫu RegEx để miêu tả các ký tự bình thường ( bao gồm các số và các ký tự Alphabet) như dưới đây mà thôi.

[a-zA-Z0-9]

Tuy nhiên bằng cách dùng thêm ký tự ^ vào trước mẫu RegEx miêu tả các ký tự bình thường, chúng ta có thể biểu diễn các ký tự đặc biệt trong Python như sau:

[^a-zA-Z0-9]

Ứng dụng hàm re.sub(), chúng ta có thể xóa ký tự đặc biệt trong chuỗi Python như ví dụ cụ thể sau đây:

import re

string = "Hey! \nWhat's up bro?"
new_string = re.sub(r"[^a-zA-Z0-9]","",string)
print(new_string)
#>> HeyWhatsupbro

Xóa ký tự đặc biệt bằng phương thức isalnum()

Phương thức isalnum() trong Python vốn được sử dụng để kiểm tra xem tất cả ký tự trong chuỗi có phải là ký tự chữ hoặc số (Alphanumeric) hay không. Nếu như tất cả ký tự trong chuỗi là ký tự chữ hoặc số, thì kết quả True sẽ được trả về và ngược lại thì False sẽ được trả về.

Do ký tự đặc biệt trong chuỗi Python không thuộc kiểu ký tự chữ hoặc số, do đó chúng ta có thể ứng dụng phương thức isalnum() để kiểm tra từng ký tự trong chuỗi chỉ định có phải là ký tự đặc biệt, hay chỉ là ký tự bình thường mà thôi.

Sau đó, để xóa ký tự đặc biệt trong chuỗi Python, chúng ta đơn giản chỉ lấy các ký tự bình thường trong chuỗi ban đầu và bỏ lại các ký tự đặc biệt, sau đó tạo ra một chuỗi mới chỉ chứa ký tự bình thường là xong.

Để làm được điều đó, chúng ta sẽ dùng vòng lặp for trong python để lấy và kiểm tra từng ký tự trong chuỗi ban đầu, và dùng toán tử cộng để nối các ký tự kết quả để tạo ra chuỗi mới.

Ví dụ cụ thể, chúng ta xóa khoảng trắng trong chuỗi Python cũng như các ký tự đặc biệt khác như các dấu !'? trong chuỗi như sau:

string = "Hey! \nWhat's up bro?"
new_string= ''
for char in string:
if (char.isalnum() == True):
new_string += char
print(new_string)
#>> HeyWhatsupbro

Bạn cũng có thể thay thế toán tử += bằng cách kết hợp phương thức append() và join() như sau:

string = "Hey! \nWhat's up bro?"
new_arr= []
for char in string:
if (char.isalnum() == True):
new_arr.append(char)

new_string = ''.join(new_arr)
print(new_string)
#>> HeyWhatsupbro

Xóa ký tự đặc biệt bằng hàm filter()

Tương tự như phương pháp ở trên, chúng ta cũng có thể sử dụng phương thức filter() để xóa ký tự đặc biệt trong chuỗi Python. Điều khác biệt ở đây là thay vì sử dụng vòng lặp for để lấy ra các ký tự bình thường trong chuỗi và xóa các ký tự đặc biệt, thì chúng ta sẽ sử dụng hàm filter() trong Python.

Ví dụ cụ thể:

string = "Hey! What's up bro?"

new_string = ''.join(filter(str.isalnum, string))
print(new_string)
#>> HeyWhatsupbro

Xóa khoảng trắng thừa và ký tự không in

Khi bạn muốn xóa cả khoảng trắng thừa (leading và trailing spaces) và các ký tự không in như tab (\t) và dấu xuống dòng (\n), bạn có thể sử dụng phương thức strip() để xóa khoảng trắng thừa và phương thức replace() để xóa các ký tự không in. Dưới đây là một ví dụ:

text = "  Hello, \tWorld!\n "
cleaned_text = text.strip().replace('\t', '').replace('\n', '')

print(cleaned_text)

Kết quả của mã trên sẽ là chuỗi đã được xóa khoảng trắng thừa và các ký tự không in:

Hello, World!

Phương thức strip() xóa khoảng trắng thừa từ cả hai đầu của chuỗi, sau đó chúng ta sử dụng phương thức replace() để thay thế các ký tự không in bằng chuỗi rỗng.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách xóa ký tự đặc biệt trong chuỗi Python rồi. Xóa ký tự đặc biệt trong chuỗi là một phần quan trọng của việc xử lý dữ liệu văn bản trong lập trình Python. Tùy thuộc vào tình huống cụ thể, bạn có thể lựa chọn cách xóa ký tự đặc biệt phù hợp để làm cho dữ liệu của bạn trở nên sạch sẽ và dễ dàng xử lý.

URL Link

https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/thao-tac-voi-chuoi-string-trong-python/loai-bo-ky-tu-dac-biet-trong-chuoi-python/

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME  › >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.