Друзья, здравствуйте! Считываю тектовый файл в список. В каждой строке списка есть символ "|", по которому в последствии этот список разделяется на столбцы. Их всегда 10, но бывает закрадывается 11-ый. Какое решение вижу с высоты скудного знания PQ: В отдельный столбец вывожу число вхождений символа и если их 11, в этой строке хочу удалить четвертое вхождение этого символа. Подскажите, пожалуйста, как удалить n-ое вхождение некоего символа, в моем случае "|". (вторая строка в приложенном файле, в номере договора указана вертикальная черта) Или если для это применяется другое решение, то подскажите его. Но и по вопросу удаления именно четвертой вертикальной черты тоже подскажите, интересно, как это решается
let
Source = Csv.Document(File.Contents("C:\Users\user\Downloads\Выписка (1).txt"),[Delimiter=",", Columns=1, Encoding=1251, QuoteStyle=QuoteStyle.None]),
count = Table.AddColumn(Source, "Счет", (x)=> List.Count(Text.PositionOf(x[Column1],"|",Occurrence.All ))),
#"Inserted Text Before Delimiter" = Table.AddColumn(count, "Текст перед разделителем", each Text.BeforeDelimiter([Column1], "|", 3), type text),
#"Inserted Text After Delimiter" = Table.AddColumn(#"Inserted Text Before Delimiter", "Текст после разделителя", each Text.AfterDelimiter([Column1], "|", 3), type text),
#"Added Conditional Column" = Table.AddColumn(#"Inserted Text After Delimiter", "Итог", each if [Счет] = 9 then [Column1] else [Текст перед разделителем]&[Текст после разделителя], type text),
#"Removed Other Columns" = Table.SelectColumns(#"Added Conditional Column",{"Итог"})
in
#"Removed Other Columns"
Xel, спасибо, работает) Если кому не лень, можете показать крутые варианты, типа, без доп. столбцов или еще как-то по-хитрому) нравится учиться на примерах здешних мастеров
Перешла на стадию лезть поперек мастеров со своими рисунками и поросячьим визгом Вот такое еще нарисовалось. Не поняла, насколько я четвертое вхождение черточки извращенно ищу. Но раз находится...
Код
let
Source = Csv.Document(File.Contents("C:\Users\user\Downloads\Выписка (1).txt"),[Delimiter=",", Columns=1, Encoding=1251, QuoteStyle=QuoteStyle.None])[Column1],
res = List.Transform (Source, (x)=> if List.Count(Text.PositionOf(x,"|",Occurrence.All )) = 9 then x else Text.RemoveRange(x, Text.PositionOf(x, "|",4){3}) )
in
res