Страницы: 1
RSS
Как разделить слипшийся текст в PQ
 
Добрый день. Есть данные, которые берутся из PDF. К сожалению там есть текст, который никак не получается разделить пробелом.
В ПДФ формате этот текст выглядел так:
Иванов Иван
Иванович
А PQ преобразовал его так: Иванов ИванИванович.
Т.е. PQ не увидел пробела, и склеил два слова.
Как их можно разделить?
 
можно так:
Код
let
  Source= Excel.CurrentWorkbook(){[Name = "Таблица1"]}[Content], 
  SplitColumnbyCharacterTransition = Table.SplitColumn(
    Source, 
    "MyData", 
    Splitter.SplitTextByCharacterTransition({"а" .. "я"}, {"А" .. "Я"}), 
    {"MyData1", "MyData2"}
  ), 
  AddColumn = Table.AddColumn(
    SplitColumnbyCharacterTransition, 
    "ИНФО", 
    each Text.Trim(Text.Combine({[MyData1], [MyData2]}, " "))
  ), 
  SelectColumns = Table.SelectColumns(AddColumn, {"ИНФО"})
in
 SelectColumns
 
azma, Расскажите пожалуйста что вы применили для разделения слов? Я попытаюсь применить вашу идею в своем файле.
 
Цитата
написал:
применить вашу идею в своем файле.
Можно так

Код
Text.Combine(Splitter.SplitTextByCharacterTransition({"а" .. "я"}, {"А" .. "Я"})([MyData])," ")

а, лучше выложите свой файл
Изменено: azma - 14.07.2022 10:46:52
 
Вот пример. Файл состоит из 2 листов: источника и результата.
Эти данные часто меняются, в зависимости от файла, который необходимо анализировать.
В источнике желтым цветом выделены 2 ячейки, которые постоянно склеиваются. Это происходит, т.к. данные для анализа берутся с PDF файла. А там в таблице данные, которые не вмещаются в ячейку, и переносятся на следующую строку. А PQ это не воспринимает как пробел, поэтому склеивает оба слова.
Изменено: RamRiz - 14.07.2022 11:41:29
 
RamRiz, Почитайте ТУТ
Изменено: Msi2102 - 14.07.2022 11:44:07
 
Msi2102, Спасибо.
Благодаря формуле =ПОДСТАВИТЬ(E10;СИМВОЛ(10);" ") смог решить проблему.
Но я не нашел как это сделать средствами PQ.
azma, Вроде как смог это сделать.
 
Цитата
RamRiz написал:
склеил два слова
Где PQ их склеил? Вы перенос строки в PQ не видите? В выведенном на лист результате не пробовали перенос строк включить? Увидели изменение?
Ну специально же правило форума написано - ПРИЛОЖИТЕ ПРИМЕР! А не свои догадки описывайте :)
Цитата
RamRiz написал:
azma , Вроде как смог это сделать.
Очень сложно прочитать описание функции Splitter.SplitTextByCharacterTransition?
"Возвращает функцию, которая разделяет текст на текстовый список в соответствии с переходом от одного типа символов к другому."
Как будете все возможные переходы предсказывать?

А если разделилось
вот так?

Вам нужно просто заменить символ переноса строки "#lf" на " ". Сразу для всех столбцов таблицы так:
Код
let
  src       = Excel.CurrentWorkbook(){[ Name = "Слияние__Спецификация3" ]}[Content],
  transform = Table.TransformColumns ( src, {}, ( x ) => if x is text then Text.Replace ( x, "#(lf)", " " ) else x )
in
  transform
Изменено: surkenny - 14.07.2022 12:28:31
 
surkenny, Я же приложил пример в посте 5
Я читал описание функции, но я плохо понимаю язык M, Что где написать в этой функции, чтобы он не создавал ошибок в моем файле.  
 
surkenny,
Спасибо большое, ваша формула сработала как надо.
Расскажите пожалуйста  что значат эти аргументы? ( Источник, {}, ( x ) => if x is text then Text.Replace ( x, "#(lf)", " " ) else x )
Мне это важно, т.к. только если пойму, смогу применять эту формулу сам в других примерах в будущем.
 
RamRiz, я же Вам выше ссылочку давал. Там искали функцию Table.TransformColumns?
ССЫЛКА
Страницы: 1
Наверх