Django bėdos

S
  • 23 Bal '09

Sveiki. Rašau svetainę, naudodamas Django framework'ą ir susidūriau su problema - jeigu turiu string tipo kintamąjį su lietuviškom raidėm, kaip reikia lietuviškas raides paversti į angliškas (Ą į a, Č į c)? Bandžiau su replace, tačiau django mėtė error'us. Gal kas buvo susidūręs su tuo ir galėtų pagelbėti?

D
  • 4 Geg '09

man atrodo veikia maždaug toks kodas:

letters_lt = u'ąčęėįšųūžĄČĘĖĮŠŲŪŽ'
letters_latin = 'aceeisuuzACEEISUUZ'
def latinize(str):
for i in range(len(letters_latin)):

    ##print (letters_lt[i], letters_latin[i])
    str = str.replace(letters_lt[i], letters_latin[i])
str = re.sub('[^\w ()-_]+', '', str)
str = re.sub('\s+', '-', str)
str = str.strip('- _')
return str
D
  • 4 Geg '09

bliamba, html su bbcode sudarkė python'ą :/
bandau dar kartą au code tagu

letters_lt    = u'ąčęėįšųūžĄČĘĖĮŠŲŪŽ'
letters_latin = 'aceeisuuzACEEISUUZ'

def latinize(str):
    for i in range(len(letters_latin)):
        str = str.replace(letters_lt[i], letters_latin[i])
    str = re.sub('[^\w ()-_]+', '', str)
    str = re.sub('\s+', '-', str)
    str = str.strip('- _')
    return str
D
  • 4 Geg '09

formatavimas vėl darko python'ą , ypač [ i ]

D
  • 4 Geg '09

bandau 3čią kart

letters_lt    = u'ąčęėįšųūžĄČĘĖĮŠŲŪŽ'
letters_latin = 'aceeisuuzACEEISUUZ'

def latinize(str):
    for i in range(len(letters_latin)):
        str = str.replace(letters_lt[ i ], letters_latin[ i ])
    str = re.sub('[^\w ()-_]+', '', str)
    str = re.sub('\s+', '-', str)
    str = str.strip('- _')
    return str
S
  • 28 Geg '09

Dėkui labai tačiau radau paprastesnį būdą.

import unicodedata

lt = u'ąčę'

be_lt = unicodedata.normalize('NFKD', lt).encode('ascii', 'ignore')
"""
be_lt dabar yra 'ace'
"""

Šis būdas yra universalesnis ir tikiuosi kam nors pravers.