Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để cắt bớt các ký tự không in được khỏi một chuỗi trong Python?

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

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

0x01 không được in vì nó không phải là một ký tự có thể in được. Nếu bạn cũng cần hỗ trợ Unicode, thì bạn cần sử dụng mô-đun dữ liệu Unicode và regexes để xóa các ký tự này.

ví dụ

import sys, unicodedata, re
# Get all unicode characters
all_chars = (unichr(i) for i in xrange(sys.maxunicode))
# Get all non printable characters
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) == 'Cc')
# Create regex of above characters
control_char_re = re.compile('[%s]' % re.escape(control_chars))
# Substitute these characters by empty string in the original string.
def remove_control_chars(s):
    return control_char_re.sub('', s)
print (remove_control_chars('\x00\x01String'))

Đầu ra

Điều này sẽ cung cấp kết quả:

String