SORU
19 Kasım 2013, Salı


Yerine ASCII olmayan karakterleri tek boşluk ile

Bir boşluk ile ASCII olmayan (\x00-\x7F) tüm karakterleri değiştirmek için ihtiyacım var. Bu atladığım bir şey yoksa-kolay ölü Python, değil şaşırdım. Aşağıdaki sadece tüm ASCII olmayan karakterler: işlev kaldırır

def remove_non_ascii_1(text):

    return ''.join(i for i in text if ord(i)<128)

Ve bu non-ASCII karakter kod noktası (bayt miktarı (3 boşluk ile değiştirilir karakter yani) başına boşluk miktarını değiştirir:

def remove_non_ascii_2(text):

    return re.sub(r'[^\x00-\x7F]',' ', text)

Nasıl tek bir boşluk ile ASCII olmayan tüm karakterler yerine?

Of the myriad of similar SO questions, none address character replacement as opposed to stripping, and ayrıca Adres tüm ascıı olmayan karakterler bir özel karakter.

CEVAP
19 Kasım 2013, Salı


''.join() ifadesidirfiltrelemebir şey çıkarma ASCII olmayan; koşullu bir ifade yerine kullanabilirsiniz:

return ''.join([i if ord(i) < 128 else ' ' for i in text])

Bu karakterler tek tek işleme ve hala karakter başına bir boşluk yerine kullanmak istiyorsunuz.

Düzenli ifade sadece değiştirmeniz gerekirardışıkASCII olmayan bir boşluk: karakter ile

re.sub(r'[^\x00-\x7F] ',' ', text)

Not .

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DudeFromUkraine

    DudeFromUkra

    7 Ocak 2008
  • Krumme1996

    Krumme1996

    21 EYLÜL 2009
  • Moto Journal

    Moto Journal

    28 Mayıs 2007