Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách cắt bỏ ký tự không in được khỏi chuỗi trong Python?

Nếu bạn chỉ có ký tự ASCII và muốn loại bỏ các ký tự không in được, cách dễ nhất là lọc bỏ các ký tự đó bằng string.printable. Ví dụ:

>>> import string
>>> filter(lambda x: x in string.printable, '\\x01string')
'string'

Ký tự 0x01 không được in ra vì nó không phải ký tự in được. Nếu bạn cần hỗ trợ Unicode, thì bạn cần sử dụng module unicodedata và regex để loại bỏ các ký tự này.

Ví dụ

import sys, unicodedata, re

# Lấy tất cả ký tự Unicode
all_chars = (chr(i) for i in range(sys.maxunicode))

# Lấy tất cả ký tự điều khiển (non-printable)
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) == 'Cc')

# Tạo regex từ các ký tự trên
control_char_re = re.compile('[%s]' % re.escape(control_chars))

# Thay thế các ký tự này bằng chuỗi rỗng trong chuỗi gốc
def remove_control_chars(s):
    return control_char_re.sub('', s)

print(remove_control_chars('\\x00\\x01String'))

Kết quả

Điều này sẽ cho ra kết quả:

String