|
|
|
Найти текст в документе и показать всю строку, Найти текст в документе и показать всю строку |
|
|
portos |
26.8.2018, 0:36
|
Apprentice
Сообщений: 181
Регистрация: 6.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.157
|
Цитата(cirus @ 25.8.2018, 22:29) А версия пилота какая? Последнюю стабильную скачайте: http://uopilot.uokit.com0:34:52 0 (autosaved_0.txt, 0): Error while creating Lua virtual mashine 0:34:55 0 (autosaved_0.txt, 0): --lua - Неопознанная команда: --lua 0:35:34 0 (autosaved_0.txt, 1): --lua - Error while creating Lua virtual mashine 0:35:35 0 (autosaved_0.txt, 1): local - Неопознанная команда: local 0:36:16 0 (autosaved_0.txt, 2): local - Error while creating Lua virtual mashine 0:36:17 0 (autosaved_0.txt, 1): local - Неопознанная команда: local
|
|
|
|
portos |
26.8.2018, 0:42
|
Apprentice
Сообщений: 181
Регистрация: 6.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.157
|
Цитата(cirus @ 25.8.2018, 22:29) А версия пилота какая? Последнюю стабильную скачайте: http://uopilot.uokit.com скачал 0:41:11 1 (autosaved_1.txt, 0): Lua загружен. 0:41:11 1 (autosaved_1.txt, 0): a runtime error. 8: attempt to index local 'f' (a nil value) --lua local path_in=[[C:\Users\abc\Desktop\file1.txt]] -- путь к файлу, в котором надо найти текст local path_out=[[C:\Users\abc\Desktop\file2.txt]] -- куда сохран
|
|
|
|
portos |
26.8.2018, 0:57
|
Apprentice
Сообщений: 181
Регистрация: 6.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.157
|
Цитата(cirus @ 25.8.2018, 22:46) А путь кто будет менять... Проверки на существование файла нет в данном коде.
--lua local path_in=[[C:\Users\portos\Desktop\1111.txt]] -- путь к файлу, в котором надо найти текст local path_out=[[C:\Users\portos\Desktop\2222.txt]] -- куда сохранить local f = io.open(path_in, "r") -- открываем файл для чтения local result_f = io.open(path_out, "wb") -- открываем для записи, если файла не существует он будет создан for v in f:lines() do -- читаем файл по строкам result_f:write(v:gsub(".18", "Привет") .."\r\n") -- пишем в файл, при этом заменить все слова Hello на Привет end f:close() -- закрываем файл result_f:close() -- закрываем файл вообще ничего не происходит , не запускается
|
|
|
|
cirus |
26.8.2018, 1:48
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26746
Пользователь №: 16.971
Возраст: 29
|
Цитата как если надо несколько слов заменить на Привет ? код
Код --lua local path_in=[[C:\Users\portos\Desktop\1111.txt]] -- путь к файлу, в котором надо найти текст local path_out=[[C:\Users\portos\Desktop\2222.txt]] -- куда сохранить
local f = io.open(path_in, "r") -- открываем файл для чтения local result_f = io.open(path_out, "wb") -- открываем для записи, если файла не существует он будет создан
local t = {} -- массив, в котором хранится что на что менять table.insert(t, {"Hello", "Привет"}) -- Hello на привет table.insert(t, {".18", "qwerty"}) -- .18 заменить на qwerty table.insert(t, {"text", "99"}) -- text заменить на 99
for v in f:lines() do -- читаем файл по строкам local temp=v for j=1, #t do -- заменяем temp =temp:gsub(t[j][1], t[j][2]) end result_f:write(temp .."\r\n") end
f:close() -- закрываем файл result_f:close() -- закрываем файл
|
|
|
|
DarkMaster |
26.8.2018, 13:24
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27737
Пользователь №: 11.279
|
Цитата local t = {} -- массив, в котором хранится что на что менять table.insert(t, {"Hello", "Привет"}) -- Hello на привет table.insert(t, {".18", "qwerty"}) -- .18 заменить на qwerty table.insert(t, {"text", "99"}) -- text заменить на 99 Имхо элегантнее выглядит: local t = {} t[#t +1] = ... t[#t +1] = ... t[#t +1] = ... Благо луа такое позволяет без инсерта.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
portos |
26.8.2018, 16:59
|
Apprentice
Сообщений: 181
Регистрация: 6.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.157
|
Цитата(cirus @ 26.8.2018, 14:55) Как-то понятнее объясните что нужно.
записать слова в массивы и заменить в {"Hello", "Привет"}) типа a = Hello b = Привет {a, b})
|
|
|
|
cirus |
26.8.2018, 17:18
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26746
Пользователь №: 16.971
Возраст: 29
|
Цитата записать слова в массивы и заменить в {"Hello", "Привет"}) типа a = Hello b = Привет {a, b}) Код --lua local arr = {"Hello", "Привет", "text", "99"} -- arr[1] - будет Hello, arr[2] - Привет и т. д.
local t = {} t[#t+1] = {arr[1], arr[2]} t[#t+1] = {arr[3], arr[4]}
log(t[1][1], t[1][2]) log(t[2][1], t[2][2]) Цитата взять из док 1111.txt первую строку , и в док 2222.txt найти первое слово из 1111.txt первой строки и дописать третье слово из 1111.txt в строку с найденным словом в док 2222.txt. Для примера напишите содержимое файлов 1111.txt и 2222.txt, и что должно получиться на выходе.
|
|
|
|
portos |
26.8.2018, 17:35
|
Apprentice
Сообщений: 181
Регистрация: 6.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.157
|
Цитата(cirus @ 26.8.2018, 15:18) Код --lua local arr = {"Hello", "Привет", "text", "99"} -- arr[1] - будет Hello, arr[2] - Привет и т. д.
local t = {} t[#t+1] = {arr[1], arr[2]} t[#t+1] = {arr[3], arr[4]}
log(t[1][1], t[1][2]) log(t[2][1], t[2][2]) Для примера напишите содержимое файлов 1111.txt и 2222.txt, и что должно получиться на выходе. в док 1111.txt 12623337369 uopilot1 17.07.18 07 18 14582563263 uopilot2 27.07.18 07 19 12109811481 uopilot4 04.07.18 07 19 16614242721 uopilot4 26.06.18 07 18 18438822829 uopilot8 03.07.18 07 19 в док 2222.txt 12623337369 xxxxxxx uopilot1 xxxxxxx 14582563263 xxxxxxx uopilot2 xxxxxxx 13313003643 xxxxxxx uopilot2 xxxxxxx 12109811481 xxxxxxx uopilot4 xxxxxxx 16145055191 xxxxxxx uopilot3 xxxxxxx 16614242721 xxxxxxx uopilot4 xxxxxxx 12104696429 xxxxxxx uopilot7 xxxxxxx 18438822829 xxxxxxx uopilot8 xxxxxxx надо что бы записалось в 2222.txt 12623337369 xxxxxxx uopilot1 xxxxxxx 17.07.18 07 18 14582563263 xxxxxxx uopilot2 xxxxxxx 27.07.18 07 19 13313003643 xxxxxxx uopilot2 xxxxxxx 12109811481 xxxxxxx uopilot4 xxxxxxx 04.07.18 07 19 16145055191 xxxxxxx uopilot3 xxxxxxx 16614242721 xxxxxxx uopilot4 xxxxxxx 26.06.18 07 18 12104696429 xxxxxxx uopilot7 xxxxxxx 18438822829 xxxxxxx uopilot8 xxxxxxx 03.07.18 07 19
|
|
|
|
cirus |
26.8.2018, 18:58
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26746
Пользователь №: 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
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") -- пишем в файл break -- выходим из цикла end
if k == #arr1 then -- если слово не было найдено f3:write(arr2[i] .. "\r\n") -- пишем строку без изменений end end end
f1:close() -- закрываем файл f2:close() -- закрываем файл f3:close() -- закрываем файл
|
|
|
|
portos |
26.8.2018, 19:11
|
Apprentice
Сообщений: 181
Регистрация: 6.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.157
|
Цитата(cirus @ 26.8.2018, 16:58) код
Код --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
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") -- пишем в файл break -- выходим из цикла end
if k == #arr1 then -- если слово не было найдено f3:write(arr2[i] .. "\r\n") -- пишем строку без изменений end end end
f1:close() -- закрываем файл f2:close() -- закрываем файл f3:close() -- закрываем файл то что надо ,спасибо
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|