Транслитерация содержимого файла с Python

2 марта 2015. Комментарии .

У меня есть похожая запись о транслитерации имён файлов. Здесь же будет транслитерировано само содержимое файлов.

Ниже будет описано, как заменить в файле все кириллические символы на английские с помощью python3. Благодаря простоте скрипт легко модифицировать и подстроить под свои нужды.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import os
import fileinput

def latinizator(letter, dic):
for i, j in dic.items():
letter = letter.replace(i, j)
return letter

legend = {
'а':'a',
'б':'b',
'в':'v',
'г':'g',
'д':'d',
'е':'e',
'ё':'yo',
'ж':'zh',
'з':'z',
'и':'i',
'й':'y',
'к':'k',
'л':'l',
'м':'m',
'н':'n',
'о':'o',
'п':'p',
'р':'r',
'с':'s',
'т':'t',
'у':'u',
'ф':'f',
'х':'h',
'ц':'ts',
'ч':'ch',
'ш':'sh',
'щ':'shch',
'ъ':'y',
'ы':'y',
'ь':"'",
'э':'e',
'ю':'yu',
'я':'ya',

'А':'A',
'Б':'B',
'В':'V',
'Г':'G',
'Д':'D',
'Е':'E',
'Ё':'Yo',
'Ж':'Zh',
'З':'Z',
'И':'I',
'Й':'Y',
'К':'K',
'Л':'L',
'М':'M',
'Н':'N',
'О':'O',
'П':'P',
'Р':'R',
'С':'S',
'Т':'T',
'У':'U',
'Ф':'F',
'Х':'H',
'Ц':'Ts',
'Ч':'Ch',
'Ш':'Sh',
'Щ':'Shch',
'Ъ':'Y',
'Ы':'Y',
'Ь':"'",
'Э':'E',
'Ю':'Yu',
'Я':'Ya',
}

### Транслитерировать содержимое ВСЕХ файлов из папки
#for filename in os.listdir('.'):
# with fileinput.FileInput(filename, inplace=True, backup='.bak') as f:
# for line in f:
# print(latinizator(line, legend), end='')

### Чтобы транслитерировать содержимое одного файла yourfilename.txt
with fileinput.FileInput('yourfilename.txt', inplace=True, backup='.bak') as f:
for line in f:
print(latinizator(line, legend), end='')

Чтобы заменить все кириллические буквы на латиницу в файле yourfilename.txt, надо положить скрипт transliterator.py в одну папку с этим файлом и выполнить

user $
python3 transliterator.py

При этом автоматически будет создана резервная копия (backup) оригинального файла yourfilename.txt.bak.

P.S. Функцию для замены ключа словаря на его значение подсмотрел тут.