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

  • FUNKER530 - Veteran Community & Combat Footage

    FUNKER530 -

    25 Ocak 2007
  • itfigueres

    itfigueres

    12 EKİM 2013
  • Turkish Airlines

    Turkish Airl

    11 AĞUSTOS 2006