स्ट्रिंग्स पर इरेटिंग दुर्भाग्य से पायथन में धीमी है। इस तरह की चीज़ के लिए नियमित अभिव्यक्तियाँ तीव्रता के एक क्रम से अधिक होती हैं। आपको बस चरित्र वर्ग का निर्माण स्वयं करना है। Unicodedata मॉड्यूल इस के लिए काफी उपयोगी विशेष रूप से है, unicodedata.category () समारोह। श्रेणियों के विवरण के लिए यूनिकोड चरित्र डेटाबेस देखें ।
import unicodedata, re, itertools, sys
all_chars = (chr(i) for i in range(sys.maxunicode))
categories = {'Cc'}
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories)
control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))
control_char_re = re.compile('[%s]' % re.escape(control_chars))
def remove_control_chars(s):
return control_char_re.sub('', s)
पायथन 2 के लिए
import unicodedata, re, sys
all_chars = (unichr(i) for i in xrange(sys.maxunicode))
categories = {'Cc'}
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories)
control_chars = ''.join(map(unichr, range(0x00,0x20) + range(0x7f,0xa0)))
control_char_re = re.compile('[%s]' % re.escape(control_chars))
def remove_control_chars(s):
return control_char_re.sub('', s)
कुछ उपयोग-मामलों के लिए, अतिरिक्त श्रेणियां (उदाहरण के लिए नियंत्रण समूह से सभी बेहतर हो सकते हैं, हालांकि यह प्रसंस्करण समय को धीमा कर सकता है और स्मृति उपयोग को काफी बढ़ा सकता है। प्रति श्रेणी वर्णों की संख्या:
Cc
(नियंत्रण): 65
Cf
(प्रारूप): १६१
Cs
(सरोगेट): 2048
Co
(निजी-उपयोग): 137468
Cn
(अप्रकाशित): 836601
टिप्पणियों से सुझाव जोड़ना संपादित करें ।