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

  • Atlantic Records

    Atlantic Rec

    15 Aralık 2006
  • Grace Su

    Grace Su

    6 Ocak 2006
  • paikimchung

    paikimchung

    12 Mayıs 2006