Здравствуйте, гость ( Вход | Регистрация )

9 страниц V « < 7 8 9  
Ответить в эту темуОткрыть новую тему
> Найти текст в документе и показать всю строку, Найти текст в документе и показать всю строку
FREEON
сообщение 27.3.2020, 15:23
Сообщение #161


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1320
Пользователь №: 18.346
Возраст: 25



А как быть если нужно заменить текст в определённой папке и ее подпапках на Lua?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 27.3.2020, 23:08
Сообщение #162


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2419
Пользователь №: 18.746



Цитата(FREEON @ 20.3.2020, 6:55) *
описание действий
Код
--lua
local f = io.open([[C:\qwe.txt]], "rb")  -- открыть файл для чтения
local f2 = io.open([[C:\456.txt]], "wb")  -- открыть файл для записи

if f and f2 then   -- если файлы открылись
       local s = f:read("*a")     -- прочитать весь файл
       f:close()  -- закрыть файл

       log (s)  -- содержимое файла
       -- тут заменяем что нужно
       -- Сперва удаляем как обычный текст (действия которые можно делать "одновременно" в один прогон массива файла)
       </div>
       </script>
       </a>
        
       <p style="text-align:center">
       <p>
       </p>
       -- Замена(по-прежнему в исходном первой прогонке массива)
       <strong> на [B]
       </strong> на [/B]

        --удалить текст по маске по уже обработаному тексту массива(перезапись после каждой маски)
        <div.+>
        <script.+>
        <img.alt\="\S+"
        class="\S+"
        style=".+">
        <a.href\="\S+"
        -- замена после предыдущих правок в тексте(массиве)
        -- удаляем и перезаписываем файл
        title="Увеличить изображение">
        <img alt=""
        --
        src=" на [img] ----меняем как обычный текст после замены перезаписываем массив
        ".$ на [/img]  --замена по регулярному вырожению
        --конечная правка, удаляем символы
        >
        --замена текста на свой,например из таблицы(которой пока еще нет, но имет примерный вид):
        «Арена Клинков» меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Арена Клинков»[/url]
        "Арена Клинков" меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Арена Клинков»[/url]
        «Тайны старого замка» меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Тайны старого замка»[/url]
        "Тайны старого замка" меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Тайны старого замка»[/url]
        -- и далее в таком же духе
       f2:write(s)   -- пишем в другой файл
       f2:close()  -- закрыть файл
end
Цитата(FREEON @ 27.3.2020, 15:23) *
А как быть если нужно заменить текст в определённой папке и ее подпапках

Код
--lua
path=[[C:\2\1\7]]  -- Путь к папке.

require "luaposh";PScode('void',{[[#}

function text($arr){#}
    [string]$a=(Get-Content $arr.fullname -encoding UTF8)-join "`r`n"
### Тэги, которые нужно удалить
    $ex=@(
        '<p style="text-align:center">'," ",
        '< title="Увеличить изображение">','<p ',
        "</p>",'\<[Ii][Mm][Gg].[Aa][Ll][Tt]\="\S+"',
        '<[Aa].[Hh][Rr][Ee][Ff]\=".+?">','</a>','<p>',
        '<script.+>','<div.+>','<img alt=""',
        '</script>','</div>','class="\S+"','style=".+">'
    );$ex|ForEach-Object{$a=$a -replace $_}
### Замена тэгов
    $a=$a -replace '<strong>', '[B]' -replace '</strong>', '[/B]'
    $a=$a -replace 'src\="', '[img]' -replace '".(?=\r\n)', '[/img]'
### Замена данных
    $a=$a -replace '«Арена Клинков»',
    '[url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Арена Клинков»[/url]'
    $a=$a -replace '«Тайны старого замка»',
    '[url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Тайны старого замка»[/url]'
    #...
### Сохранить результат
    $a -split "`r`n"|Out-File $($arr.DirectoryName+"\new"+$arr.name)
}
Get-ChildItem $input '*.txt' -recurse|ForEach-Object{text $_}

]]},path)


Код проверил на присланном файле. Работает со всеми файлами в папке и ее подпапках. Из 1.txt получился 2.txt.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.3.2020, 11:27
Сообщение #163


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1320
Пользователь №: 18.346
Возраст: 25



Подозреваю что неверно дергаю переменные функции...
Код
--lua
log "clear" log "mode compact"
local path = [[C:\1]]      -- путь к папке
local resultarray, count = dir (path, "*.smali") -- получить список всех файлов в формате 'wav', включая файлы в подпапках
log ("Найдено файлов: " .. count)
if  count then      -- если файлы найдены
    for i=1, #resultarray do
        log (resultarray[i][1])                          -- показать в логе список
        local file1 = io.open([[resultarray[i][1]]], "rb") -- Открыть файл для чтения
        local file2 = io.open([[C:\NEW.smali]], "wb")   -- Куда будем записывать результат(файл создастся сам)

        if  file1 and file2 then                        -- если файлы открылись
            local s, n = file1:read("*a")               -- прочитать весь файл
            file1:close()                               -- закрыть файл

            -- заменяем текста
            s, n = s:gsub('"Action"', '"Экшены"')                 log("Экшены - замен: " .. n)
            s, n = s:gsub('"Adventure"', '"Приключения"')         log("Приключения - замен: " .. n)

            file2:write(s)                          -- пишем в другой файл
            file2:close()                           -- закрыть файл
            filedelete ([[resultarray[i][1]]])      -- удаляем старый файл
            filecopy ([["C:\NEW.smali"]], [["resultarray[i][1]"]]) --копируем новый файл в папку с нужным именем и расширением
        end
    end
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.3.2020, 11:38
Сообщение #164


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26576
Пользователь №: 16.971
Возраст: 29



Цитата
[["resultarray[i][1]"]]

Переменная в кавычках и квадратных скобках это просто текст.
Выводите в лог и сразу будет видно:
Код
filecopy ([["C:\NEW.smali"]], [["resultarray[i][1]"]]) --копируем новый файл в папку с нужным именем и расширением
log([["resultarray[i][1]"]])
log(resultarray[i][1])

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.3.2020, 12:45
Сообщение #165


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1320
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 28.3.2020, 11:38) *

Переменная в кавычках и квадратных скобках это просто текст.

Код
--lua
log "clear" log "mode compact"
local path = [[C:\1]]      -- путь к папке
local resultarray, count = dir (path, "*.txt") -- получить список всех файлов в формате 'wav', включая файлы в подпапках
log ("Найдено файлов: " .. count)
if  count then      -- если файлы найдены
    for i=1, #resultarray do
        log (resultarray[i][1])                          -- показать в логе список
        local file1 = io.open(resultarray[i][1], "rb") -- Открыть файл для чтения
        local file2 = io.open([[C:\NEW.txt]], "wb")   -- Куда будем записывать результат(файл создастся сам)

        if  file1 and file2 then                        -- если файлы открылись
            local s, n = file1:read("*a")               -- прочитать весь файл
            file1:close()                               -- закрыть файл

            -- заменяем текста
            s, n = s:gsub('"Action"', '"Экшены"')                 log("Экшены - замен: " .. n)
            s, n = s:gsub('"Adventure"', '"Приключения"')         log("Приключения - замен: " .. n)

            file2:write(s)                          -- пишем в другой файл
            file2:close()                           -- закрыть файл
            filedelete (resultarray[i][1])      -- удаляем старый файл
            filecopy ([["C:\NEW.txt"]], resultarray[i][1]) --копируем новый файл в папку с нужным именем и расширением
            filedelete ([["C:\NEW.txt"]])
        end
    end
end

а не норм работает, забыл в папке для теста сменить расширение на нужный и все заработало.
И удалять file2 после обработки каждой т.к. дублировала шаблоны замены (IMG:style_emoticons/default/smile.gif)

Сообщение отредактировал FREEON - 28.3.2020, 13:14
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 28.3.2020, 16:26
Сообщение #166


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2419
Пользователь №: 18.746



offtop
При публикации почему-то теряется часть кода. Вот этот кусок вырезается  & n b s p ; .




--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.3.2020, 18:33
Сообщение #167


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1320
Пользователь №: 18.346
Возраст: 25



"&nbsp;" это код пробела и поэтому если печатовать как обычный текст то он при обработке заменяется на соответствующий символ.
Так же к ним относятся такие коды(html) пустоты:
&# 4448;
&# 160;
&# 0160;
&# 12288;
&# 10;
&# 13;
&# 12;
&# 8195;
&# 8194;
и прочие
...
Что косательно пропажи кода то его нужно в данном случае публиковать без пред просмотра.
 
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

9 страниц V « < 7 8 9
Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 29.3.2024, 18:51
Designed by Nickostyle