我需要改變西裏爾字母到拉丁字母的字符串(我們只考慮兩個用於短字母):編碼cyrilllic字母?
# -*- coding: utf-8 -*-
import re
vac = {'а': 'a', 'б': 'b'}
s = 'абба'
re.sub('а', vac['а'], s)
re.sub('б', vac['б'], s)
print s # works fine, prints "abba"
s = 'абба'
# doesn't work in loop
for ch in vac:
s = re.sub(unicode(ch, 'utf-8'), vac[unicode(ch, 'utf-8')], s)
print s
UPD:謝謝你,夥計們。根據您的回答,我的編碼工作職能:
# -*- coding: utf-8 -*-
def translit(s):
symbols = (u"абвгдеёзийклмнопрстуфхъыьэюАБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЬЭЬЬЮ",
u"abvgdeezijklmnoprstufh'y'euABVGDEEZIJKLMNOPRSTUFH'Y'EU")
tr = {ord(a):ord(b) for a, b in zip(*symbols)}
vac = {u'я': 'ya', u'ж': 'zh', u'ц': 'ts', u'ч': 'ch', u'ш': 'sh', u'щ': 'sch', u'Я': 'Ya', u'Ч': 'Ch', u'Ш': 'Sh', u'Щ': 'Sch', u'Ж': 'Zh', u'Ц': 'Ts'}
s = s.translate(tr)
s = ''.join([vac.get(c, c) for c in s])
return s
s = u"Лорем ипсум, напиши translit'ом"
a = translit(s)
print a
你的第一個代碼不能工作,你不會在任何地方存儲're.sub'的輸出。 –