Подскажите, пожалуйста, какой функцией Power Query можно сделать транслитерацию слов? Я так понимаю необходима таблица замен для каждой буквы и потом частичное совпадение в словах этих букв. Спасибо
Power Query транслитерация слов
15.12.2017 16:42:24
|
|
|
|
15.12.2017 17:09:43
Как вариант - самописная функия или же легкий способ, через справочник
|
|
|
|
15.12.2017 17:55:19
Ну, с русского на английский это сработает, а вот с транслита как на русский перевести?
Вот горшок пустой, он предмет простой...
|
|
|
|
15.12.2017 18:21:41
Можно попросить на примере сделать эту функцию? |
|||
|
|
15.12.2017 18:23:30
![]()
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
|
|||
|
|
15.12.2017 18:32:26
Давайте закажу. Кто готов взяться?
Изменено: |
|
|
|
15.12.2017 18:45:50
![]()
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
|
|||
|
|
15.12.2017 18:48:41
Я видел много решений через макрос. Желательно через Power Query конструктор на лету обновлять строки в транслит. Такого решения не нашел.
|
|
|
|
15.12.2017 21:36:29
Вот мышкой наклацал то что имел ввиду Максим, но тут только для футболки реализовано
|
|
|
|
18.12.2017 18:08:08
Добрый день,
Максим Зеленский, Спасибо! подскажите такой момент, правильно ли я понял работу List.ReplaceMatchingItems это что-то наподобие Switch? Точнее даже ВПР
Изменено: |
|
|
|
19.12.2017 15:29:32
Илья Демид, хм, я в таком аспекте даже не думал об этой функции. В EXCEL аналогов прямых нет. При работе с текстом можно представить что-то вроде функции ПОДСТАВИТЬ, у которой второй и третий аргумент - не одно значение, а список значений, которые заменяются попарно.
Там в описании самой функции в принципе достаточно прозрачно, два основных аргумента: 1) список значений (в моем примере это Text.ToList([Столбец для транслитерации]) ) 2) список списков подстановки. То есть список из пар, каждая из которых записана в виде списка {что меняем, на что меняем}. То есть, заменяет значения в списке в соответствии со схемой подстановки.
Например, если в первом столбце русские, во втором английские буквы, то в результате Table.ToColumns(TranslitTable) получим что-то такое
List.Zip его как бы транспонирует, преобразует его в нужный вид списков пар:
Далее List.ReplaceMatchingItems находит в своем первом аргументе все русские буквы "в" и меняет их на сопоставленные ей "v", "г" на "g" и т.п.
F1 творит чудеса
|
|||||||
|
|
19.12.2017 15:35:33
Максим Зеленский, я правильно понимаю, что через данную функцию можно будет сделать и обратную конвертацию с транслита на русский, только сначала нужно пробежаться по двухбуквенным сочетаниям, а уже после по однобуквенным?
Вот горшок пустой, он предмет простой...
|
|
|
|
19.12.2017 15:55:59
PooHkrd, нет, напрямую не получится. Как вы сформируете для нее список, в котором будете производить замену? Если брать ее буквально, то Text.ToList разобьет строку по 1 символу, то есть никаких двухбуквенных сочетаний не будет. Значит, надо бить по двухбуквенным скользящим способом?.. А там есть и 4-буквенные замены
Но есть и другие решения для таких случаев. Например, у Ивана Бондаренко: Да и тут можно, я думаю, сделать что-то еще. Сейчас поэкспериментирую.
F1 творит чудеса
|
|
|
|
19.12.2017 16:20:53
Максим Зеленский, Спасибо!
|
|
|
|
28.12.2017 20:31:04
Накидал свой вариант с комментариями и пояснениями:
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
|
|
|
|
28.12.2017 22:14:56
Коллеги, познавательно. У меня вопрос: у каждого своя таблица соответствия или есть общепринятая (для транслитерации)?
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
29.12.2017 10:28:20
F1 творит чудеса
|
|
|
|
29.12.2017 11:31:39
The_Prist, добавил комментарий к статье - можно сильно сократить функцию на этапе сортировки:
F1 творит чудеса
|
|||
|
|
29.12.2017 11:57:23
Максим, спасибо. Буду посмотреть
![]()
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
|
|
|
|
02.07.2025 21:23:20
Наткнулся в Интернете на вот такое решение:
|
|||
|
|
03.07.2025 16:46:35
SAG, а если бы у нас букв в алфавите было 10К?
|
||||
|
|
|||
Читают тему