Ru-Board.club
← Вернуться в раздел «Программы»

» TextPipe

Автор: D1D1D1D
Дата сообщения: 17.11.2015 17:44
Если пользуетесь PowerGrep (а я убедительно всем рекомендую), то в ней очень просто можно обрабатывать вложенные кавычки. Вот готовый шаблон для программы, работающий при установленном PowerGrep: нужно перейти на вкладку "Sequence" и нажать "Execute" (разумеется указав путь, по которому будет лежать тестовый HTML со множеством кавычек и вложенных кавычек).
Метод будет работать только с текстом между тегами, из-за чего (задана секция) иногда случаются пропуски.
Автор: RuLex339
Дата сообщения: 26.11.2015 12:35
Подскажите, а существует ли что-нибудь подобное Textpipe, но для Mac?
Автор: SFC
Дата сообщения: 04.01.2016 16:51
в TextPipe Pro 9.7.3 EN Portable | 9.3 MB

Есть ли возможность работать / настроить работу с юникодовскими символами. т.е. UTF-8, а не 16.
При вставке в фильтры они отображаются в окне нормально.
Входящий файл и исходящий файлы UTF-8.
но в исходящем файле идут вопросы вместо самого символа.
И вставить hex четырех-значный в фигурных скобках не получается. только двузначный.

Добавлено:
вопрос снят - разобрался
Автор: ged1470
Дата сообщения: 16.02.2016 11:32
TextPipe Pro 9.7.3
Не получается выполнить плюсование/минусование для всех найденных чисел.
Фильтр 1: выделяю число между кавычек и отправляю его с субфильтр:"(\d*)"
субфильтр 1: выделяю само число (оно трех и четырех значные) и отправляю его с субфильтр: \d{3,4}
субфильтр 2: операция Calculation делаю плюсование числа 80.

Так числа с тремя знаками обрабатываются как надо, а начиная с 1000 (четырезначные числа) - неверно.
Пробовал изменять субфильтр 1 на \d{3,} и на \d+ и \d{4} ит.д. - все равно не получается чтобы за один проход верно обработать трех и четырезначные числа.
Как еще можно решить эту задачу, или может я где-то допустил ошибку?
файл пример http://www.ex.ua/184950323996
Автор: ASE_DAG
Дата сообщения: 16.02.2016 23:40
ged1470
> Не получается выполнить плюсование/минусование для всех найденных чисел.
> Как еще можно решить эту задачу

$ perl -pe 's/\d+/$&+80/ge' file
Автор: unreal666
Дата сообщения: 17.02.2016 04:48
ged1470
флажок такой стоит?

а то в проге почему-то по умолчанию включено нежадное совпадение.
Автор: ged1470
Дата сообщения: 17.02.2016 08:05
unreal666

Цитата:
флажок такой стоит?

Спасибо, теперь обработало трех и четырехзначные числа верно за один проход.

Автор: Irina_Nenashewa
Дата сообщения: 17.02.2016 08:59
Не плучается скачать с хомяка,выложите на rghost.ru пожалуйста.
Автор: fangete
Дата сообщения: 20.02.2016 12:32
скажите, а можно программно задать, сколько раз можно выполнить фильтр?
Пример: есть строка StringA, ее нужно повторить 2 раза:
stringA;2;
Фильтром "найти схему PERL" я могу вычленить какую строку и сколько раз повторять:
^(.*);(\d+);
в $1 - что повторять
$2 - сколько раз повторять


Как подключить какой-нибудь фильтр, чтобы ему можно было динамически задавать количество повторов?
Мoжно ли передать эти данные в jscsript?
Автор: unreal666
Дата сообщения: 20.02.2016 12:45

Цитата:
Мoжно ли передать эти данные в jscsript?

зачем эти данные передавать в jscript, если их можно получить/вычленить в самом jscript?
Передавать в подфильтры можно только одну переменную, а глобальные переменные кажется можно изменять/захватывать только в jscript/vbscript.

Добавлено:
хотя нет. В фильтрах perl и EasyPattern search/replace тоже можно захватывать в именованные переменные, которые являются глобальными, судя по справке.
Автор: evoroz
Дата сообщения: 20.02.2016 14:59
fangete
Не совсем понял. Два одинаковых фильтра подряд не прокатят?

Цитата:
есть строка StringA, ее нужно повторить 2 раза

Вы хотите дублировать строку получив
StringA
StringA
? Напишите в JScript два раза вывод строки. Или условие сколько раз выводить.
Автор: fangete
Дата сообщения: 20.02.2016 20:42
да, немного непонятно я объяснил, есть файл со строками вида:
StringA;2
StrinB;4
StringC;5

Число после точки с запятой означает, сколько раз должна повторяться строка в файле вывода, т.е. в примере выходной файл должен быть такого вида:

StringA
StringA
StrinB
StrinB
StrinB
StrinB
StringC
StringC
StringC
StringC

Как правильно заметили, такую штуку в textpipe лучше всего сделать через вставку фильтра с jscript.
Автор: unreal666
Дата сообщения: 20.02.2016 21:06
ну так и делай. Или скрипт готовый нужен?
Автор: Morcant
Дата сообщения: 02.03.2016 00:36
[more] Подскажите пожалуйста, скачала с сайта субтитры к курсу, но они там в формате

Код: <a href="#" class="closedCaptionsSnippet" id="cc75" data-action="seek" data-model="video" data-time="75"> Finally, we'll take what we've learned into the field</a>
<a href="#" class="closedCaptionsSnippet" id="cc78" data-action="seek" data-model="video" data-time="78"> to bring a sketch to life on location.</a>
<a href="#" class="closedCaptionsSnippet" id="cc81" data-action="seek" data-model="video" data-time="81"> We'll build on concepts and techniques used</a>
Автор: evoroz
Дата сообщения: 02.03.2016 09:00
Morcant
Для первой строки: data-time="75" время начала показа - 0:01:15,
соответственно 78 - время окончания показа - 0:01:18.

Для начала надо собрать всю нужную информацию на одной строке. Получив примерно:
data-time="75" data-time="78" Finally, we'll take what we've learned into the field
data-time="78" data-time="81" to bring a sketch to life on location. ...
А затем преобразовать это в субтитры.
Автор: VidelSamogO
Дата сообщения: 02.03.2016 13:24
По крайней мере эта программа умеет больше чем та, которой я пользовался.
Автор: Morcant
Дата сообщения: 02.03.2016 17:44

Цитата:
Для начала надо собрать всю нужную информацию на одной строке.
ну то что нужно в одной строке собрать - это я догадалась, а вот как это сделать (а заодно преобразовать время из просто секунд в формат 0:01:15 и нумерацию для каждой строки добавить) - вот в этом и вопрос
Автор: evoroz
Дата сообщения: 02.03.2016 22:10
1. Чтобы собрать одну строку я бы сделал так:
1.1. Дублировал каждую строку
1.2. Добавил строку в начало и строку в конец (чтобы сработал п. 1.3)
1.3. Написал поиск/замену сразу для двух строк, чтобы в результате получить одну строку со временем начала, конца и собственно словами

2. Нумерацию строк и преобразование можно сделать с помощью VBScript.
2.1. Преобразование времени - функция TimeSerial
2.2. Ну а нумерация и разбивка - это уже совсем просто
Автор: Kristian
Дата сообщения: 05.03.2016 06:13
Добрый день!

Обрабатываю в Textpipe словарь, статьи которого хранятся в отдельных файлах html.
В каждом из этих файлов, среди прочего, нужно провести нумерацию значений слов.
На выходе все обработанные файлы объединяются в один.
Все работает, но есть одно но, которое подрывает автоматическую нумерацию..

Нумерация проводится с помощью данного простого скрипта:
__________


Код: dim c

function processLine(line, EOL)
c = c + 1
processLine = c & ". " & line & EOL
end function

sub startJob()
end sub

sub endJob()
c = 0
end sub

function startFile()
startFile = ""
end function

function endFile()
endFile = ""
end function
Автор: evoroz
Дата сообщения: 05.03.2016 12:11
c = 0 надо обнулять в начале или конце каждого файла. как-то так

function startFile()
c = 0
startFile = ""
end function

или

function endFile()
c = 0
endFile = ""
end function
Автор: Kristian
Дата сообщения: 05.03.2016 23:04
Спасибо, попробовал. Не работает. И то, и другое выдает вот такое:


Код: Заголовок
1.
1.
1.

Заголовок
1.
1.
1.
Автор: evoroz
Дата сообщения: 06.03.2016 17:39
Kristian
[more] Ну уж не знаю. Либо я что-то не понял.

Я сделал 2 файла с одинаковым содержанием наполнив их содержанием пробного текста.

You can type sample text in
the Trial Run Input Area to
test if your filter is working
properly. Click the [Trial Run]
button below to start the test.

You can also perform Partial Trial
Runs by right-clicking on filters
in the Filter list.

To clear this text, just right
click it and select 'Clear Entire
Field' from the menu. Most
of TextPipe's fields have
similar helpful menus.

В программе написал такой текст:

--------------------------

'This example script keeps a line counter that
'does not reset for each file

dim c
c = 0

function processLine(line, EOL)
c = c + 1
processLine = c & ". " & line & EOL
end function

sub startJob()
end sub

sub endJob()
c = 0
end sub

function startFile()
startFile = ""
c = 0
end function

function endFile()
endFile = ""
c = 0
end function

----------------------

Получил:

1. You can type sample text in
2. the Trial Run Input Area to
3. test if your filter is working
4. properly. Click the [Trial Run]
5. button below to start the test.
6.
7. You can also perform Partial Trial
8. Runs by right-clicking on filters
9. in the Filter list.
10.
11. To clear this text, just right
12. click it and select 'Clear Entire
13. Field' from the menu. Most
14. of TextPipe's fields have
15. similar helpful menus.
1. You can type sample text in
2. the Trial Run Input Area to
3. test if your filter is working
4. properly. Click the [Trial Run]
5. button below to start the test. и т.д.

Я понял, что примерно это было вам и надо. [/more]
Автор: Kristian
Дата сообщения: 06.03.2016 20:50
evoroz

Ну да, у меня аналогичный результат. Отдельно скрипт нормально работает, а как субфильтр - почему-то нет.

[more]Можно, например, расставить теги <li> в образец, типа:


Код: You can type sample text in
<li>the Trial Run Input Area to
test if your filter is working
properly. Click the [Trial Run]
button below to start the test.

<li>You can also perform Partial Trial
Runs by right-clicking on filters
in the Filter list.

To clear this text, just right
click it and select 'Clear Entire
<li>Field' from the menu. Most
of TextPipe's fields have
similar helpful menus.
Автор: evoroz
Дата сообщения: 06.03.2016 23:17
Ничего удивительного. Посылая каждый раз в подфильтр вы как бы начинаете программу по новой. А в начале там единица. Значит это значение надо передавать к следующему вызову, либо идти другим путем.
Поскольку речь о написании программы, то могу посоветовать в программе анализировать каждую строку, находить там <li> и их нумеровать. Т.к. вы в программировании не сильны, этот вариант не прокатывает.
Автор: Kristian
Дата сообщения: 07.03.2016 07:00
evoroz

Да, теперь все понятно. Жаль, конечно, что для такой относительно простой задачи он не прокатит.
Что ж, буду искать другие пути..
Спасибо за разъяснения!
Автор: SFC
Дата сообщения: 08.03.2016 13:56
Kristian
Я не понял то ли вам надо, но я тут это реализовал, но через глобальную переменную, а не локальную. Через локальную - действительно какойто глюк TextPipe

См. группы фильтров по номерам 24 или 44 они одинаковы.
т.е. преобразовывает нумерованный список HTML в явную нумерацию
Автор: Ghost_Inets1
Дата сообщения: 14.05.2016 09:40
Как настроить удаление фрагмента текста у всех файлов в каталоге? У меня доступна только кнопка Go-Backup.


Добавлено:
Автор: evoroz
Дата сообщения: 14.05.2016 09:50
Загрузить список файлов во вторую вкладку Files to Process (где у вас "1 файлов в обработке") и, если фильтр уже есть, нажать F9.
Автор: Ghost_Inets1
Дата сообщения: 16.05.2016 12:07
evoroz спасибо. А можно задать каталог? Он вроде там же, в Files to Process.
Вылетает ошибка
2016-05-16 11:59:26,Warning,500 line limit reached - processing is CONTINUING. If logging enabled, see log file [C:\Documents and Settings\Designer\textpipe.log] for remaining detail
2016-05-16 11:59:26,Warning,Logging is controlled with Filter Options (the top node in the filter tree)
Автор: evoroz
Дата сообщения: 17.05.2016 10:57

Цитата:
Вылетает ошибка 2016-05-16 11:59:26,Warning,500 line limit reached - processing is CONTINUING.

Это предупреждение, а не ошибка. Означает, что в лог попадут 500 файлов. Забейте.
Обработаны будут все. Каталог можно задать. А можно комбинацию из каталогов и файлов, т.к. можно указать несколько строк.


Добавлено:
На своем сайте я опубликовал несколько статей по программе TextPipe.
Обзор по фильтрам и практическое применение программы.
Надеюсь, что будет полезно.
Смотреть надо по тэгу textpipe http://www.digitweb.ru/index.php/blog/itemlist/tag/textpipe
Если будут вопросы или проблемы - обращйтесь.

Страницы: 12345678

Предыдущая тема: Программы для решения уравнений


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.