|
|
|
Найти текст в документе и показать всю строку, Найти текст в документе и показать всю строку |
|
|
cirus |
26.8.2018, 21:54
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26576
Пользователь №: 16.971
Возраст: 29
|
код
Код --lua -- не забываем указать нужный путь к файлам local path_in1=[[C:\Users\abc\Desktop\1111.txt]] -- путь к файлу, в котором надо найти текст local path_in2=[[C:\Users\abc\Desktop\2222.txt]] -- путь к файлу, в котором надо найти текст local path_out=[[C:\Users\abc\Desktop\3333.txt]] -- куда сохранить
local f1 = io.open(path_in1, "r") -- открываем файл 1111.txt для чтения local f2 = io.open(path_in2, "r") -- открываем файл 2222.txt для чтения local f3 = io.open(path_out, "wb") -- открываем файл 3333.txt для записи, если файла не существует он будет создан
local arr1, arr2 = {}, {} for v in f1:lines() do -- читаем файл 1111.txt по строкам arr1[#arr1+1]=v -- добавляем в массив end for v in f2:lines() do -- читаем файл 2222.txt по строкам arr2[#arr2+1]=v -- добавляем в массив end f1:close() -- закрываем файл 1111 f2:close() -- закрываем файл 2222
f2 = io.open(path_in2, "wb") -- открываем файл 2222.txt для записи for i=1, #arr2 do -- для всех строк файла 2222.txt local k = 0 for j=1, #arr1 do -- для всех строк файла 1111.txt local first_word = arr1[j]:match("[^%s]+") -- первое слово из строки k = k + 1 if arr2[i]:match(first_word) then -- если слово найдено local end_string = arr1[j]:match("uopilot.-%s(.+)") -- находит всё что идет после uopilot f3:write(arr2[i] .. " " .. end_string .."\r\n") -- пишем в файл 3333 break -- выходим из цикла end
if k == #arr1 then -- если слово не было найдено f2:write(arr2[i] .. "\r\n") -- пишем в файл 2222 end end end
f2:close() -- закрываем файл 2222 f3:close() -- закрываем файл 3333
|
|
|
|
portos |
26.8.2018, 22:24
|
Apprentice
Сообщений: 181
Регистрация: 6.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.157
|
Цитата(cirus @ 26.8.2018, 19:54) код
Код --lua -- не забываем указать нужный путь к файлам local path_in1=[[C:\Users\abc\Desktop\1111.txt]] -- путь к файлу, в котором надо найти текст local path_in2=[[C:\Users\abc\Desktop\2222.txt]] -- путь к файлу, в котором надо найти текст local path_out=[[C:\Users\abc\Desktop\3333.txt]] -- куда сохранить
local f1 = io.open(path_in1, "r") -- открываем файл 1111.txt для чтения local f2 = io.open(path_in2, "r") -- открываем файл 2222.txt для чтения local f3 = io.open(path_out, "wb") -- открываем файл 3333.txt для записи, если файла не существует он будет создан
local arr1, arr2 = {}, {} for v in f1:lines() do -- читаем файл 1111.txt по строкам arr1[#arr1+1]=v -- добавляем в массив end for v in f2:lines() do -- читаем файл 2222.txt по строкам arr2[#arr2+1]=v -- добавляем в массив end f1:close() -- закрываем файл 1111 f2:close() -- закрываем файл 2222
f2 = io.open(path_in2, "wb") -- открываем файл 2222.txt для записи for i=1, #arr2 do -- для всех строк файла 2222.txt local k = 0 for j=1, #arr1 do -- для всех строк файла 1111.txt local first_word = arr1[j]:match("[^%s]+") -- первое слово из строки k = k + 1 if arr2[i]:match(first_word) then -- если слово найдено local end_string = arr1[j]:match("uopilot.-%s(.+)") -- находит всё что идет после uopilot f3:write(arr2[i] .. " " .. end_string .."\r\n") -- пишем в файл 3333 break -- выходим из цикла end
if k == #arr1 then -- если слово не было найдено f2:write(arr2[i] .. "\r\n") -- пишем в файл 2222 end end end
f2:close() -- закрываем файл 2222 f3:close() -- закрываем файл 3333 делает отлично , но добавляет в 3333.txt (17.07.18 07 18) .... надо только ту строку в 2222.txt без добавления (17.07.18 07 18)
|
|
|
|
portos |
28.8.2018, 2:26
|
Apprentice
Сообщений: 181
Регистрация: 6.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.157
|
Цитата(cirus @ 27.8.2018, 23:45) Код --lua filedelete ([[D:\uopilot\поиск.bat]]) -- удалит файл filedelete ([[D:\uopilot\11.txt]]) -- удалит файл local f = io.open([[D:\uopilot\поиск.bat]], "wb") -- открыть файл для записи f:write([[FINDSTR /L "26.08.18" "text.txt" > "11"]] .."\r\n") -- записать f:close() -- закрыть файл exec ([[D:\uopilot\поиск.bat]]) -- запуск соединил два скрипта --lua filedelete ([[D:\uopilot\поиск.bat]]) -- удалит файл filedelete ([[D:\uopilot\11]]) -- удалит файл local f = io.open([[D:\uopilot\поиск.bat]], "wb") -- открыть файл для записи f:write([[FINDSTR /L "28.08.18" "text.txt" > "11"]] .."\r\n") -- записать f:close() -- закрыть файл exec ([[D:\uopilot\поиск.bat]]) -- запуск ------------------------------------------------------------------------- -- ВЫБИРАЕМ СТРОКИ ИЗ ОСНОВНОГО ДОКУМЕНТА -- не забываем указать нужный путь к файлам local path_in1=[[D:\uopilot\11]] -- путь к файл, в котором надо найти текст local path_in2=[[D:\uopilot\12]] -- путь к файл, в котором надо найти текст ДОКУМЕНТ ОСНОВА local path_out=[[D:\uopilot\13]] -- куда сохранить local f1 = io.open(path_in1, "r") -- открываем файл 11 для чтения local f2 = io.open(path_in2, "r") -- открываем файл 12 для чтения local f3 = io.open(path_out, "wb") -- открываем файл 13 для записи, если файла не существует он будет создан local arr1, arr2 = {}, {} for v in f1:lines() do -- читаем файл 11 по строкам arr1[#arr1+1]=v -- добавляем в массив end for v in f2:lines() do -- читаем файл 12 по строкам arr2[#arr2+1]=v -- добавляем в массив end f1:close() -- закрываем файл 11 f2:close() -- закрываем файл 12 f2 = io.open(path_in2, "wb") -- открываем файл 12 для записи for i=1, #arr2 do -- для всех строк файла 12 local k = 0 for j=1, #arr1 do -- для всех строк файла 11 local first_word = arr1[j]:match("[^%s]+") -- первое слово из строки k = k + 1 if arr2[i]:match(first_word) then -- если слово найдено local end_string = arr1[j]:match("27.08.-%s(.+)") -- находит всё что идет после uopilot f3:write(arr2[i] .."\r\n") -- пишем в файл 13 break -- выходим из цикла end if k == #arr1 then -- если слово не было найдено f2:write(arr2[i] .. "\r\n") -- пишем в файл 12 end end end f2:close() -- закрываем файл 12 f3:close() -- закрываем файл 13 выдаёт ошибку 2:25:18 18 (autosaved_18.txt, 0): (-1): Ошибка! Проверьте правильность скрипта! ELuaScript unit "GLOBAL_NAME_SPACE", line 22. attempt to index local 'f1' (a nil value) --lua filedelete ([[D:\uopilot\поиск.bat]]) -- удалит файл filedelete ([[D:\uopilot\11]]) -- удалит файл local f = io
|
|
|
|
FREEON |
19.6.2019, 12:55
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1320
Пользователь №: 18.346
Возраст: 25
|
Требуется решить с виду простую задачу...есть 1 строка из данных разделенная символом(не принципиально каким можно заменить на любой). Примерно такого вида текст1 % text ^ text ? , текст2 % text ^ text ? , нам необходимо разделить ее на подстроки и вместо символов % ^ ? подставить значения которые берем из других массивов Код log clear log mode compact
set %arr [1 1] текст1 % text ^ text ? . текст2 % text ^ text ? . текст3 % text ^ text ? . log %arr [1 1] set delimiter '.' //устанавливаем делиметр что бы смогли получить строку и разбить на подстроки init_arr %a %arr [1 1] //представляем ее в виде подстрок %a [1 1] %a [1 2] %a [1 3] %a [1 4] и т.д. set delimiter ' ' set $sub1 % // указываем ваше слово set $sub2 ^ // указываем ваше слово set $sub3 ? // указываем ваше слово set %b [1 2] 10 20 30 //подстановка вместо % числа из этой строки set %c [1 3] 600г 555г 3кг //подстановка вместо ^ текста из этой строки set %d [1 4] 18кг 9г 10т //подстановка вместо ? текста из этой строки for #i 1 size(%a) log нач строка %a [#i 1] set #pos posEx($sub1, %b[#i]) set #pos posEx($sub2, %c[#i]) set #pos posEx($sub3, %d[#i]) //log подстановка значений в строку //log %a[#i] end_for end_script
в итоге должен получить: текст1 10 text 600г text 18кг текст2 20 text 555г text 9г текст3 30 text 3кг text 10т Но чо-то с виду что казалось простым делом подставить скриптом пока не выходит
|
|
|
|
Fors1k |
19.6.2019, 16:55
|
Journeyman
Сообщений: 497
Регистрация: 19.12.2017 Группа: Пользователи Наличность: 2419
Пользователь №: 18.746
|
Цитата(FREEON @ 19.6.2019, 12:55) необходимо разделить ее на подстроки...
Итог будет разделен на подстроки в массиве %result и логе: Код set $a текст1 % text ^ text ? . текст2 % text ^ text ? . текст3 % text ^ text ? . set $a string_replace ($a "." "" all) set delimiter ' ' init_arr %arr (1 6) $a init_arr %a (1) 10 20 30 init_arr %b (1) 600г 555г 3кг init_arr %c (1) 18кг 9г 10т for #a 1 size(%arr) set $a %arr[#a] set $a string_replace ($a "%" "%a[1 #a]") set $a string_replace ($a "^" "%b[1 #a]") set $a string_replace ($a "?" "%c[1 #a]") init_arr %result (#a) $a log %result[#a] end_for end_script cirus
Почему не работает так: set %arr[#a] string_replace (%arr[#a] "%" "%a[1 #a]") ? Приходится делать так: set $a %arr[#a] set $a string_replace ($a "%" "%a[1 #a]") . Это баг, или норм? Не делает s_r в строке массива..
--------------------
Для связи
|
|
|
|
cirus |
24.6.2019, 11:54
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26576
Пользователь №: 16.971
Возраст: 29
|
Цитата 1)заменить все русские буквы в тексте на нижний регистр, затем 2)найти в тексте все строки содержащие русские буквы и заменить первую русскую букву на заглавную? код
Код --lua log "clear" log "mode compact" local path=[[C:\123.txt]] -- путь к файлу local path2=[[C:\456.txt]] -- куда сохранить
-- таблица, в которой храним какую букву на какую меняем local t={["А"]="а", ["Б"]="б", ["В"]="в", ["Г"]="г", ["Д"]="д", ["Е"]="е", ["Ё"]="ё", ["Ж"]="ж", ["З"]="з", ["И"]="и", ["Й"]="й", ["К"]="к", ["Л"]="л", ["М"]="м", ["Н"]="н", ["О"]="о", ["П"]="п", ["Р"]="р", ["С"]="с", ["Т"]="т", ["У"]="у", ["Ф"]="ф", ["Х"]="х", ["Ц"]="ц", ["Ч"]="ч", ["Ш"]="ш", ["Щ"]="щ", ["Ы"]="ы", ["Ь"]="ь", ["Ъ"]="ъ", ["Э"]="э", ["Ю"]="ю", ["Я"]="я"}
local t2={} for i, v in pairs(t) do t2[v]=i end
local f = io.open(path, "r") -- открыть файл для чтения if f then -- если файл открылся local f_result = io.open(path2, "wb") -- открыть файл для записи if f_result then -- если файл открылся for v in f:lines() do -- прочитать файл по строкам log(v) v=string.gsub(v, "[а-яА-Я]", t) -- заменить все заглавные русские на строчные v=string.gsub(v, "[а-яА-Я]", t2, 1) -- заменить первую строчную русскую букву на заглавную log(v .. "\r\n") f_result:write(v .. "\r\n") -- записать в файл end else log ("Файл " .. path2 .. "не открылся") end f:close() -- закрыть файл f_result:close() -- закрыть файл else log ("Файл " .. path .. " не найден") end
|
|
|
|
dron4938 |
24.6.2019, 14:32
|
Apprentice
Сообщений: 256
Регистрация: 20.3.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.395
|
Цитата(cirus @ 24.6.2019, 11:54) код
Код --lua log "clear" log "mode compact" local path=[[C:\123.txt]] -- путь к файлу local path2=[[C:\456.txt]] -- куда сохранить
-- таблица, в которой храним какую букву на какую меняем local t={["А"]="а", ["Б"]="б", ["В"]="в", ["Г"]="г", ["Д"]="д", ["Е"]="е", ["Ё"]="ё", ["Ж"]="ж", ["З"]="з", ["И"]="и", ["Й"]="й", ["К"]="к", ["Л"]="л", ["М"]="м", ["Н"]="н", ["О"]="о", ["П"]="п", ["Р"]="р", ["С"]="с", ["Т"]="т", ["У"]="у", ["Ф"]="ф", ["Х"]="х", ["Ц"]="ц", ["Ч"]="ч", ["Ш"]="ш", ["Щ"]="щ", ["Ы"]="ы", ["Ь"]="ь", ["Ъ"]="ъ", ["Э"]="э", ["Ю"]="ю", ["Я"]="я"}
local t2={} for i, v in pairs(t) do t2[v]=i end
local f = io.open(path, "r") -- открыть файл для чтения if f then -- если файл открылся local f_result = io.open(path2, "wb") -- открыть файл для записи if f_result then -- если файл открылся for v in f:lines() do -- прочитать файл по строкам log(v) v=string.gsub(v, "[а-яА-Я]", t) -- заменить все заглавные русские на строчные v=string.gsub(v, "[а-яА-Я]", t2, 1) -- заменить первую строчную русскую букву на заглавную log(v .. "\r\n") f_result:write(v .. "\r\n") -- записать в файл end else log ("Файл " .. path2 .. "не открылся") end f:close() -- закрыть файл f_result:close() -- закрыть файл else log ("Файл " .. path .. " не найден") end почемуто на этой фразе ошибку выдает, а так работает нормально, спасиб https://i.yapx.ru/EZ2IR.pnghttps://i.yapx.ru/EZ2Oy.pngКод рОгаЛИК AppEarance ПОЗитиф Save as a screenshot GameStart I can not start the game right now. Save UI location Заметка Whether to save the UI location Do you want to save the layout? Initialize UI location Заметка Whether the UI location is initialized Reset layouts? и если фразу эту изменить то всеравно ошибка, что за крень?
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|