os.system
в порядке, но отчасти датированный. Это также не очень безопасно. Вместо этого попробуйте subprocess
. subprocess
не называет sh непосредственно и поэтому более безопасен, чем os.system
.
Получают больше информации здесь .
Вы можете использовать iconv , который имеет специальную кодировку транслитерации.
Когда строка «// TRANSLIT» добавляется к tocode, транслитерация активируется. Это означает, что когда символ не может быть представлен в целевом наборе символов, он может быть аппроксимирован одним или несколькими символами, которые похожи на исходный символ.
- http://www.gnu.org/ software / libiconv / documentation / libiconv / iconv_open.3.html
См. здесь полный пример, соответствующий вашему варианту использования.
Если вы используете iconv, убедитесь, что ваш языковой стандарт установлен правильно, прежде чем пытаться транслитерировать, иначе некоторые символы не будут правильно транслитерированы
setlocale(LC_CTYPE, 'en_US.UTF8');
Проблема с вашим запросом в том, что это очень сложно сделать. Не все глифы в большинстве языков имеют эквиваленты az, все глифы имеют фонетические эквиваленты (но это слова, а не буквы), если вы просто имеете дело с языками на основе латыни, тогда все немного проще, но у вас все еще есть проблемы с такими вещами, как I-мутация .
Лучшее слово для решения - составить грубый список фонетических звуков -> аз-эквиваленты, он не будет идеальным, но без дополнительной информации о ваших точных требованиях будет сложно разработать решение.