1 (изменено: AbbasParva, 2024-08-18 10:13:11)

Тема: AHK: Удаление первой (header) и последней строк после Loop, Parse

Всем привет!

Переношу данные из .csv-файла в гугл-таблицу используя:

Fileread, CSV, *t *p65001 %A_ScriptDir%\users.csv
Loop, Parse, CSV, `n, `r,

На скриншоте структура .csv-файла открытая в Notepad++
https://post-images.org/photo-page.php?photo=5RbQhc1E

Хотелось бы понять как можно указать скрипту удалить первую (header) и шестую (пустую) строки, т.к. они также переносятся при копировании.
Подскажите, пожалуйста, куда в данном случае копать?

Upd. Вопрос с удалением первой строки (header) удалось разрешить с помощью:

Loop, Parse, CSV, `n, `r,
{
if (A_Index = 1)
continue
StringSplit, headerElements, A_LoopReadLine, `,

2

Re: AHK: Удаление первой (header) и последней строк после Loop, Parse

AbbasParva пишет:

Upd. Вопрос с удалением первой строки (header) удалось разрешить с помощью:

А с шестой так же не получится?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: AbbasParva, 2024-08-18 19:12:09)

Re: AHK: Удаление первой (header) и последней строк после Loop, Parse

teadrinker
Ой, не уточнил - количество строк всегда разное.
Upd. Такой вариант не сработал.

if (A_Index = -1)
continue
StringSplit, headerElements, A_LoopReadLine, `,

Upd. Вариант с созданием копии .csv-файла и удалением крайне (пустой) строки очень не удобен.

4

Re: AHK: Удаление первой (header) и последней строк после Loop, Parse

Попробуйте так:

newContent := RegExReplace(CSV, "^\V+\R|\s*$")
MsgBox % "|" . newContent . "|"
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: AbbasParva, 2024-08-19 20:22:46)

Re: AHK: Удаление первой (header) и последней строк после Loop, Parse

teadrinker пишет:

Попробуйте так:

newContent := RegExReplace(CSV, "^\V+\R|\s*$")
MsgBox % "|" . newContent . "|"

Таким образом он удаляет нужную последнюю (пустую) строку, но вместе с предпоследней. Пробовал разное расположение вашего кода в своем.
Возможно неверно разместил его у себя.

Нашел подобный случай на одном из форумов. Один из предложенных вариантов удачно подошел для решения текущего вопроса.

CSV := ">>" rtrim(CSV," `n`r`t") "<<"

В любом случае, спасибо за помощь!