- Используйте модуль
fileinput
для циклического перебора стандартного ввода или списка файлов,
- декодирует строки, которые вы читаете из UTF-8, в объекты Unicode
- , затем сопоставьте любые символы Юникода по вашему желанию с помощью метода
translate
translit.py
будет выглядеть так:
#!/usr/bin/env python2.6
# -*- coding: utf-8 -*-
import fileinput
table = {
0xe4: u'ae',
ord(u'ö'): u'oe',
ord(u'ü'): u'ue',
ord(u'ß'): None,
}
for line in fileinput.input():
s = line.decode('utf8')
print s.translate(table),
И вы можете использовать это так:
$ cat utf8.txt
sömé täßt
sömé täßt
sömé täßt
$ ./translit.py utf8.txt
soemé taet
soemé taet
soemé taet
В случае, если вы используете строки Python 3, по умолчанию они являются юникодом, и вам не нужно кодировать его, если он содержит символы не ASCII или даже не латинские символы. Поэтому решение будет выглядеть следующим образом:
line = 'Verhältnismäßigkeit, Möglichkeit'
table = {
ord('ä'): 'ae',
ord('ö'): 'oe',
ord('ü'): 'ue',
ord('ß'): 'ss',
}
line.translate(table)
>>> 'Verhaeltnismaessigkeit, Moeglichkeit'