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