আপনার যদি শুধু ASCII ক্যারেক্টার থাকে এবং নন-প্রিন্টেবল ক্যারেক্টারগুলো সরাতে চান, তবে সবচেয়ে সহজ পদ্ধতি হলো string.printable ব্যবহার করে সেগুলো ফিল্টার আউট করা। উদাহরণস্বরূপ:
>>> import string >>> filter(lambda x: x in string.printable, '\x01string') 'string'
0x01 প্রিন্ট হয়নি কারণ এটি প্রিন্টযোগ্য ক্যারেক্টার নয়। আপনার যদি ইউনিকোড সাপোর্টও প্রয়োজন হয়, তবে unicodedata মডিউল এবং রেজেক্স ব্যবহার করে এই ক্যারেক্টারগুলো সরাতে হবে।
উদাহরণ
import sys, unicodedata, re
# সকল ইউনিকোড ক্যারেক্টার পান
all_chars = (unichr(i) for i in xrange(sys.maxunicode))
# সকল নন-প্রিন্টেবল কন্ট্রোল ক্যারেক্টার পান
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) == 'Cc')
# উপরের ক্যারেক্টারগুলো দিয়ে রেজেক্স তৈরি করুন
control_char_re = re.compile('[%s]' % re.escape(control_chars))
# মূল স্ট্রিং-এ এই ক্যারেক্টারগুলোকে খালি স্ট্রিং দিয়ে সাবসিটিউট করুন
def remove_control_chars(s):
return control_char_re.sub('', s)
print(remove_control_chars('\x00\x01String'))
আউটপুট
এটি নিচের আউটপুট দেবে:
String