Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะตัดอักขระที่ไม่สามารถพิมพ์ได้ออกจากสตริงใน Python ได้อย่างไร


หากคุณมีเฉพาะอักขระ ASCII และต้องการลบอักขระที่ไม่สามารถพิมพ์ได้ วิธีที่ง่ายที่สุดคือกรองอักขระเหล่านั้นออกโดยใช้ string.printable ตัวอย่างเช่น

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

ไม่ได้พิมพ์ 0x01 เนื่องจากไม่ใช่อักขระที่พิมพ์ได้ หากคุณต้องการสนับสนุน Unicode ด้วย คุณต้องใช้โมดูลข้อมูล Unicode และ regexes เพื่อลบอักขระเหล่านี้

ตัวอย่าง

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

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์:

String