Паксоблог

03 листопада 2006

Мои скрипты: translit.py


"Russian Translit"
# -*- coding: cp866 -*-
#dron@amerigo 200611031405

from string import maketrans

def translit(s):
"Russian translit: converts 'привет'->'privet'"
assert s is not str, "Error: argument MUST be string"

table1 = maketrans("абвгдеёзийклмнопрстуфхъыьэАБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЬЭ", "abvgdeezijklmnoprstufh'y'eABVGDEEZIJKLMNOPRSTUFH'Y'E")
table2 = {'ж':'zh','ц':'ts','ч':'ch','ш':'sh','щ':'sch','ю':'ju','я':'ja', 'Ж':'Zh','Ц':'Ts','Ч':'Ch','

for k in table2.keys():
s = s.replace(k,table2[k])

return s.translate(table1)

if __name__=="__main__":
print translit("Привет питон. Что транслитерировать-то, я чёт не понял!")

Результат работы:

C:\home\dron\work\python>translit.py
Privet piton. Chto transliterirovat'-to, ja chet ne ponjal!


То же самое, но на perl(источник):

sub translit
{
my $text = shift;
$text =~ y/абвгдеёзийклмнопрстуфхъыьэ/abvgdeezijklmnoprstufh'y'e/;
$text =~ y/АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЬЭ/ABVGDEEZIJKLMNOPRSTUFH'Y'E/;
my %mchars = ('ж'=>'zh','ц'=>'ts','ч'=>'ch','ш'=>'sh','щ'=>'sch',
'ю'=>'ju','я'=>'ja', 'Ж'=>'Zh','Ц'=>'Ts','Ч'=>'Ch','
'Щ'=>'Sch','Ю'=>'Ju','Я'=>'Ja');
for my $c (keys %mchars) {
$text =~ s/$c/$mchars{$c}/g;
}
return $text;
}



Technorati Tags: , , ,