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

  • Anthony Cumia

    Anthony Cumi

    5 EYLÜL 2006
  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • Matt Harding

    Matt Harding

    23 Mayıs 2006