Как сделать транслит в python
Функция translate() в Python возвращает новую строку, в которой каждый символ в строке заменяется с использованием данной таблицы перевода.
Таблица перевода должна быть отображением порядковых номеров Unicode в порядковые номера Unicode, строки или None.
Мы можем создать таблицу перевода с помощью функции maketrans() или предоставить ее вручную с помощью сопоставления словаря.
Мы можем передать в функцию maketrans() максимум три строковых аргумента:
- Если есть только один аргумент, это должен быть словарь, отображающий порядковые номера (целые числа) или символы Unicode в порядковые номера Unicode, строки или None.
- Если есть два аргумента, они должны быть строками одинаковой длины, и в результирующем словаре каждый символ в x будет сопоставлен с символом в той же позиции в y.
- Если есть третий аргумент, это должна быть строка, символы которой в результате будут сопоставлены с None.
Примеры
Давайте посмотрим на несколько примеров использования функции string translate().
maketrans() с одним аргументом
maketrans() с двумя аргументами
Второй перевод имеет два строковых аргумента одинаковой длины, и каждый символ в первой строке сопоставляется с соответствующим индексным символом во второй строке. Таким образом, A будет заменен на a, B будет заменен на b, C будет заменен на c, а D будет заменен на d в строке результата.
Если две строки аргументов имеют разную длину, возникнет ошибка.
Ошибка: ValueError: первые два аргумента maketrans должны иметь одинаковую длину
maketrans() с тремя аргументами
Если мы предоставим более трех аргументов, возникает ошибка.
Ошибка: TypeError: maketrans() принимает не более 3 аргументов (4 задано)
С ручным отображением
Если вы не прятались под скалой, вы, вероятно, много раз использовали Google Translate. Всякий раз, когда вы пытаетесь перевести слово или предложение с определенного языка на другой, именно API Google Translate предоставляет вам желаемые результаты в фоновом режиме. Хотя вы можете переводить что угодно, просто перейдя на веб-страницу Google Translate, вы также можете интегрировать Google Translate API в свои веб-приложения или программы для ПК. Самое лучшее в API - это то, что он чрезвычайно прост в настройке и использовании.
На самом деле вы можете многое сделать с помощью Google Translate API, начиная от определения языков и заканчивая простым переводом текста, настройкой исходного и целевого языков и переводом целых списков текстовых фраз. В этой статье вы узнаете, как работать с Google Translate API на языке программирования Python.
Установка Google Translate API
Прежде чем вы сможете работать с Google Translate API в Python, вам нужно будет установить его. Существует два разных способа установки API. Первый способ прост. Просто зайдите в терминал и используйте pip для установки API, как и для любой другой библиотеки Python. Для этого введите в своем терминале следующую команду:
Нажмите Enter и модуль Python для Google Translate API будет установлен в вашей системе.
Если вы установили дистрибутив Python для Anaconda, вы можете установить API с помощью Anaconda Prompt. В этом конкретном методе вы замените в приведенной выше команде pip на conda , как показано в следующем фрагменте кода:
Теперь, когда вы установили API, мы увидим его в действии с помощью нескольких примеров.
Список поддерживаемых языков
Google Translate API поддерживает множество языков. Чтобы вывести список всех поддерживаемых языков, запустите следующий скрипт:
В приведенном выше примере вы используете ключевое слово import для импорта модуля googletrans . Впоследствии вы можете перечислить все названия языков, напечатав атрибут LANGUAGES модуля googletrans .
При выполнении вышеприведенный фрагмент кода перечислит имена всех поддерживаемых языков вместе с их сокращенной записью. Вот как будет выглядеть вывод:
Основное использование
Основное использование Google Translate API - это, конечно, перевод слов или предложений с одного языка на другой. Для этого мы должны импортировать класс Translator из модуля googletrans .
Далее вы должны создать объект класса Translator .
Как только объект класса Translator создан, вы передадите текст на исходном языке в качестве параметра методу translate() объекта класса Translator() , как показано ниже:
В приведенном выше сценарии мы передаем финский текст методу translate() .
Метод translate() возвращает объект, содержащий информацию о переводе текста, источника и назначения языков и произношения текста. По умолчанию метод translate() возвращает английский перевод текста, переданного ему. В нашем случае объект, возвращаемый методом translate() , сохраняется в переменной result .
Объект, возвращаемый методом translate() , имеет следующие атрибуты:
Давайте напечатаем все вышеперечисленные атрибуты и посмотрим, что мы получим
Выходные данные показывают, что исходный язык - финский (fi), а язык назначения - английский (en). Переведенное предложение можно распечатать через атрибут text .
В приведенном выше примере мы не указали исходный язык. Поэтому Google Translate API пытается определить исходный язык. Аналогично, мы также не указали ни одного языка назначения, и поэтому API перевел исходный язык на язык по умолчанию, английский. Но что, если вы хотите указать исходный и целевой языки?
Указание исходного и целевого языков
На самом деле, очень легко указать язык назначения и исходный язык в Google Translate API. Вот код, который вы будете использовать для передачи только исходного языка:
Чтобы добавить только целевой язык, вы должны добавить атрибут dest , за которым следует код языка:
Вы также можете передать исходный и целевой языки одновременно:
Давайте теперь переведем финское предложение на французский, а затем напечатаем исходный и целевой языки, а также переведенный текст. На этот раз мы укажем исходный и целевой языки.
Приведенный выше фрагмент кода даст следующий результат.
Перевод списка фраз
Также можно перевести список текстовых фраз с помощью Google Translate API. Основной процесс такой же, как описано выше. Вам просто нужно передать список, содержащий фразы, в качестве параметра метода translate() . Это полезно для того, чтобы пакет фраз переводился отдельно, но все в одном вызове API.
Давайте создадим список строк, содержащих некоторые фразы из французского языка.
Теперь пришло время вызвать метод translate() и передать в качестве параметров список, исходный язык и язык назначения.
В приведенном выше сценарии исходный язык - французский, а язык назначения - суахили.
Метод translate() возвращает список объектов, если вы передаете список фраз к нему. Каждый объект в списке, возвращаемый методом translate() , соответствует каждой фразе в списке ввода, который должен быть переведен. Лучший способ найти перевод каждой входной фразы в списке - это перебрать список выходных объектов. Затем вы можете использовать text , origin , src и другие атрибуты отдельных объектов, чтобы увидеть перевод отдельных фраз в списке ввода.
В приведенном ниже сценарии мы перебираем список объектов, возвращаемых методом translate() , а затем печатаем источник и переведенный текст:
Следующий результат будет отображаться на экране.
Перевод текстовых документов
Вы также можете переводить текстовые документы через Google Translate API. Все, что вам нужно сделать, это прочитать текстовый файл в Python, используя метод open , прочитать текст и передать его в метод translate() .
Далее вы можете использовать метод f.read() для чтения содержимого файла. Содержимое файла может быть сохранено в любой переменной. В нашем случае имя переменной будет contents .
Мы также напечатаем переменную contents , чтобы проверить, правильно ли Python читает текстовый файл:
Вот вывод содержимого файла:
Убедитесь, что у вас есть вышеуказанный контент в вашем текстовом файле, если вы хотите следовать нашему примеру.
Мы убедились, что Python обращается к текстовому файлу и читает его. Теперь мы переведем результат, импортировав тот же старый класс Translate , что и раньше.
Следующим шагом является передача переменной contents , содержащей входной текст, в функцию translate() . Наконец, напечатайте атрибут text объекта, возвращенного методом translate() , и вы получите переведенную строку.
Вывод должен выглядеть следующим образом:
В приведенном выше примере мы использовали менеджер контекста with для автоматического открытия и закрытия потока записи. Во-вторых, мы открыли файл в режиме записи. Наконец, мы использовали метод write() для записи переведенной строки в новый файл.
Вывод
Google Translate - это инструмент с API, который помогает вам выполнять множество различных функций, связанных с переводом. Мы только поцарапали поверхность с приведенными выше примерами. Вам предлагается практиковать API, а также изучать и понимать, как использовать его в реальных приложениях.
Загрузка. Пожалуйста,
подождите.
Репутация: 7
Всего: 58
Репутация: 3
Всего: 36
Цитата |
При помощи pytils можно сделать транслитерацию: |
>>> print pytils.translit.translify(u"Проверка связи")
'Proverka svyazi'
>>> pytils.translit.detranslify("Proverka svyazi")
u'Проверка связи'
В translify вывод - str, а не unicode. В detranslify вход может быть как unicode, так и str.
И сделать строку для URL (удаляются лишние символы, пробелы заменяются на дефисы):
Репутация: 7
Всего: 58
Репутация: 10
Всего: 97
import sys
from pytils.translit import translify
Далее пишем скрипт для любимой оболочки ;)
1. Установить пакет python-setuptools.
2.
Репутация: 7
Всего: 58
Репутация: 3
Всего: 36
Цитата(GrayCardinal @ 24.7.2009, 21:42 ) |
Я в питоне ни в зуб ногой. Ты не мог бы готовый скрипт вывалить ? |
так либо ты не GrayCardinal, либо я что-то пропустил, т.к. нак портале по питону я часто твои посты читаю.
Цитата(GrayCardinal @ 25.7.2009, 15:00 ) |
Я не правильно выразился. Мне файлы надо переименовать в транслит. smile |
тебе нужно перекодировать только названия у файлов или и содержимое файлов?
рекурсивно в подкаталогах или только в текущем каталоге?
Репутация: 28
Всего: 317
надо конечно тут всякие тесты добавить - что делать если напр. файл - это каталог,
это уже оставим "как упражнение читателю", сам допендривай ;-), с мозгами у тебя нет напряжёнки.
Репутация: 7
Всего: 58
pythonwin,
Кто-то под меня косит :( )))
Названия файлов (без содержимого), названия каталогов, рекурсивно.
Репутация: 28
Всего: 317
- попытка нырнуть
- генерим список файлов
- скармливаем его новому одноимённому процессу
- по истечении возвращаемся наверьх
Репутация: 10
Всего: 97
Цитата(bilbobagginz @ 25.7.2009, 14:45 ) |
посмотри мануал os.path, там есть несколько тестов. |
bilbobagginz, да можно и без питона прямо на бэше, имея программу, которая делает транслитерацию имён.
Репутация: 3
Всего: 36
Цитата(GrayCardinal @ 25.7.2009, 16:39 ) |
Кто-то под меня косит :( ))) |
Репутация: 7
Всего: 58
- Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
- Неконкретные вопросы о выборе ПО
- Обзоры - как дополнение в ветку Обзоры
- Вы должны соблюдать правила форума.
- Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
- Оскорблять запрещается.
- Религиозные войны в Религиозных войнах.
- Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).
В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.
[ Время генерации скрипта: 0.1332 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Метод maketrans() string возвращает таблицу сопоставления для перевода, используемую для метода translate().
Проще говоря, метод ‒ это статический метод, который создает взаимно однозначное отображение символа на его перевод/замену.
Он создает представление Unicode для каждого символа для перевода.
Это сопоставление перевода затем используется для замены символа на его сопоставленный символ при использовании в методе translate().
Здесь y и z ‒ необязательные аргументы.
Параметры строки
Метод в Python принимает 3 параметра:
- x ‒ если указан только один аргумент, это должен быть словарь. Он должен содержать преобразование 1 к 1 одной символьной строки или номер Unicode (97 для ‘a’) на ее перевод.
- y ‒ если переданы два аргумента, это должны быть две строки одинаковой длины. Каждый символ в первой строке является заменой соответствующего индекса во второй строке.
- z ‒ если переданы три аргумента, каждый символ в третьем аргументе отображается в None.
Возвращаемое значение
Модуль возвращает таблицу перевода с отображением 1 к 1 порядкового номера Unicode в его перевод/замену.
Пример 1: Таблица перевода с использованием словаря
Здесь определяется словарь dict . Он содержит отображение символов a, b и c на 123, 456 и 789 соответственно.
Функция создает отображение порядкового номера Unicode символа в его соответствующий перевод.
Итак, 97 (‘a’) отображается в ‘123’, 98 ‘b’ в 456 и 99 ‘c’ в 789. Это может быть продемонстрировано на выходе обоих словарей.
Кроме того, если в словаре отображаются два или более символа, возникает исключение.
Пример 2: Таблица перевода с использованием двух строк
Здесь сначала определяются две строки равной длины abc и def. И создается соответствующий перевод.
Печать только первого перевода дает соответствие 1 к 1 порядковому номеру каждого символа в Unicode в firstString и тому же индексированному символу на secondString .
В этом случае 97 (‘a’) отображается в 100 (‘d’), 98 (‘b’) в 101 (‘e’) и 99 (‘c’) в 102 (‘f’).
При попытке создать таблицу перевода для строк неравной длины возникает исключение ValueError, указывающее, что строки должны иметь одинаковую длину.
Пример 3: Трансляционная таблица со съемной строкой
Здесь сначала создается сопоставление между двумя строками firstString и secondString .
Затем третий аргумент thirdString сбрасывает отображение каждого символа в нем на None, а также создает новое отображение для несуществующих символов.
В этом случае thirdString сбрасывает отображение 97 (‘a’) и 98 (‘b’) в None, а также создает новое отображение для 100 (‘d’), отображаемое в None.
Метод string translate() возвращает строку, в которой каждый символ сопоставлен с соответствующим символом в таблице перевода.
Метод в Python использует таблицу перевода для замены/перевода символов в данной строке в соответствии с таблицей сопоставления.
Таблица трансляции создается статическим методом maketrans().
Параметры
Метод принимает единственный параметр:
- table ‒ таблица трансляции, содержащая отображение между двумя символами; обычно создается maketrans().
Возвращаемое значение
Команда возвращает строку, в которой каждый символ сопоставляется с соответствующим символом в соответствии с таблицей перевода.
Пример 1: Перевод и отображение с использованием таблицы перевода
Но строка удаления thirdString сбрасывает сопоставление на a, а b на None.
Итак, когда строка переводится с помощью translate(), a и b удаляются, а c заменяется i, выводя idef.
Пример 2: с таблицей ручного перевода
Здесь мы не создаем таблицу перевода из maketrans(), а вручную создаем перевод словаря сопоставления.
Затем этот перевод используется для перевода строки, чтобы получить тот же результат, что и в предыдущем примере.
Читайте также: