Sıyırma python ile bir dizeden yazdırılabilir karakterleri olmayan
Çalıştırmak için kullanıyorum
$s =~ s/[^[:print:]]//g;
Perl olmayan yazdırılabilir karakterleri kurtulmak için.
Python için POSIX düzenli sınıfları yok ve yazamıyorum [:print:] sahip olmak istiyorum ne demek. Eğer bir karakter yazdırılabilir olup olmadığını tespit etmek için Python ya da herhangi bir şekilde biliyorum.
Siz ne yapardınız?
EDİT: Unicode karakterleri de destekler. Bu dize.yazdırılabilir şekilde mutlu onlara çıktı dışarı şerit olacak. küfürler.ascıı.isprint herhangi bir unicode karakter için yanlış döndürür.
CEVAP
Dizeleri üzerinden yineleme ne yazık ki Python oldukça yavaştır. Düzenli ifadeler bu tür bir şey için bir büyüklük sırası üzerinde daha hızlıdır. Sadece karakter sınıfı kendiniz inşa etmek zorunda.unicodedataBu modül, özellikle de oldukça yararlı olurunicodedata.() kategoriişlevi. Kategorilerin açıklamaları Unicode Character Database bkz.
import unicodedata, re
all_chars = (unichr(i) for i in xrange(0x110000))
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) == 'Cc')
# or equivalently and much more efficiently
control_chars = ''.join(map(unichr, range(0,32) range(127,160)))
control_char_re = re.compile('[%s]' % re.escape(control_chars))
def remove_control_chars(s):
return control_char_re.sub('', s)
Ama alfasayısal sıyırma her şeyi Pytho...
En hızlı Java bir Dize olmayan yazdırı...
Bir dize olmayan tüm yazdırılabilir ka...
Nasıl Python ile bir dize sayısal olma...
İşlevi'Python adı s ile bir dized...