SORU
24 AĞUSTOS 2009, PAZARTESİ


Nasıl str alabilirim.Unicode dizeleri ile iş çevirmek?

Aşağıdaki kodu var:

import string
def translate_non_alphanumerics(to_translate, translate_to='_'):
    not_letters_or_digits = u'!"#%\'()* ,-./:;<=>?@[\]^_`{|}~'
    translate_table = string.maketrans(not_letters_or_digits,
                                       translate_to
                                         *len(not_letters_or_digits))
    return to_translate.translate(translate_table)

Unicode olmayan dizeleri: için harika çalışıyor

>>> translate_non_alphanumerics('<foo>!')
'_foo__'

Ama unicode için başarısız dizeleri:

>>> translate_non_alphanumerics(u'<foo>!')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in translate_non_alphanumerics
TypeError: character mapping must return integer, None or unicode

"Str Python 2.6.2 docs. "Unicode nesneleri paragrafın herhangi bir anlam veremiyorum() translate yöntemi.

Nasıl Unicode dizeleri için bu işi yapabilirim?

CEVAP
24 AĞUSTOS 2009, PAZARTESİ


Tercüme Unicode sürümü Unicode Unicode sıra sayıları sıra sayıları ord Tek bir karakter için alabilirsiniz) bir eşleme gerektirir. Eğer karakter silmek istiyorsanız, None göster.

Fonksiyon bir dict çevirmek için ne istediğinizi sıra her karakterin sıralı eşleme oluşturmak için değiştirdim:

def translate_non_alphanumerics(to_translate, translate_to=u'_'):
    not_letters_or_digits = u'!"#%\'()* ,-./:;<=>?@[\]^_`{|}~'
    translate_table = dict((ord(char), translate_to) for char in not_letters_or_digits)
    return to_translate.translate(translate_table)

>>> translate_non_alphanumerics(u'<foo>!')
u'_foo__'

düzenleme:Çeviri eşleme ya da başka bir Unicode sıra, bir Unicode dize, ya da Hiçbiri (silmek) için Unicode sıra (ord) harita gerekir çıkıyor. Böylece translate_to varsayılan değer bir Unicode edebi olması için değiştirdim. Örneğin:

>>> translate_non_alphanumerics(u'<foo>!', u'bad')
u'badfoobadbad'

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Felice Musique

    Felice Musiq

    22 NİSAN 2014
  • KRQE

    KRQE

    6 AĞUSTOS 2007
  • Shanice Caruthers

    Shanice Caru

    27 EKİM 2011