Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » Офис и Текст - Нужна особая программа, для редактирования текста любого вида

Ответить
Настройки темы
Офис и Текст - Нужна особая программа, для редактирования текста любого вида

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Приветствуются вообще любые решения, главное - чтобы работали, и в принципе были удобными
И желательно, чтобы софт работал по каким-то пресетам, или даже из командной строки, путём передачи аргументов.




Короче, есть такая задача:

Есть файл, в котором информация записана в подобном виде:


param="test1" preset="default" shell="def"
param="test2" preset="admin" shell="high"
param="test3" preset="user" shell="med"


(и так далее...)

Нужно сделать несколько действий, например, привести текст в такой вид:

shell="def" param="test1"
shell="high" param="test2"
shell="med" param="test3"


(ключ preset с его значением - вырезан
ключ shell - стал первым
ключ param - стал последним)


Так вот, задача - сделать это максимально быстро, а желательно - автоматизировать


Ещё один пример манипуляций, которые нужно провести над тем же текстом:

def default test1
high admin test2
med user test3


(просто получаем все значения между " и ", вырезаем всё остальное, а потом меняем местами первое и последнее)

Отправлено: 16:13, 11-05-2018

 

Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


Цитата akvarel_ps:
Нужно сделать несколько действий, например, привести текст в такой вид:
shell="def" param="test1"
shell="high" param="test2"
shell="med" param="test3" »
Легко решается например (но не только) с помощью Excel - функция "текст по столбцам" с разбивкой по пробелу, затем удалить лишний столбец и поменять местами два оставшиеся.
Цитата akvarel_ps:
Ещё один пример манипуляций, которые нужно провести над тем же текстом:
def default test1
high admin test2
med user test3 »
Поиск и замена текста вида "shell=" на "" (пустую строку) в любом текстовом редакторе, и так по всем ненужным образцам текста, которые знаете только вы.

Полагаю, чтобы предложить более специализированное решение, вас попросят приложить образец реального документа, приведенных кусочков будет недостаточно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:22, 11-05-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата a_axe:
Полагаю, чтобы предложить более специализированное решение, вас попросят приложить образец реального документа, приведенных кусочков будет недостаточно. »
Может, кто часто работает с разным текстом, знает способы автоматизации.

Не могу найти какой-то удобный инструмент, который будет не удалять текст (заменять на "пустую строку"), а именно копировать заданный, например, регулярным выражением текст, и вставлять его в заданное место в документе. Пробовал с "вхождениями" в np++, и даже нашёл способ копировать в буфер все строки, которые np++ нашёл по моей маске. Но этот способ не очень удобно применять на крупных файлах... Поэтому, ищу подобное решение.

Но за excel спасибо, видимо стоит в нём поковыряться ещё, может найду ответ там)

Отправлено: 16:35, 11-05-2018 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата akvarel_ps:
Так вот, задача - сделать это максимально быстро, а желательно - автоматизировать »
Скрипты, скрипты и ещё раз скрипты. Внешние, либо используемые в качестве встроенного языка. В данном случае — использование регулярных выражений для поиска и замены.

Цитата a_axe:
Легко решается например (но не только) с помощью Excel - функция "текст по столбцам" с разбивкой по пробелу, затем удалить лишний столбец и поменять местами два оставшиеся. »
Я бы таки, коль использовать Microsoft Office, Word предпочёл — те же регулярки. Кто знает, что там на самом деле внутри test1, test2, test3.

Цитата akvarel_ps:
Ещё один пример манипуляций, которые нужно провести над тем же текстом: »
Аналогично. Изучайте регулярные выражения. А уж какой конкретно инструмент будете использовать — не так уж и важно.

Цитата akvarel_ps:
Не могу найти какой-то удобный инструмент, который будет не удалять текст (заменять на "пустую строку"), а именно копировать заданный, например, регулярным выражением текст, и вставлять его в заданное место в документе. Пробовал с "вхождениями" в np++, »
Те же самые регулярные выражения. Для начала: Regular Expressions - Notepad++ Wiki.

Цитата akvarel_ps:
Может, кто часто работает с разным текстом, знает способы автоматизации. »
Цитата akvarel_ps:
Но этот способ не очень удобно применять на крупных файлах... »
Скрипты.

Отправлено: 16:40, 11-05-2018 | #4


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Те же самые регулярные выражения. Для начала: Regular Expressions - Notepad++ Wiki. »
Уже довольно много чего знаю по регуляркам. Но искал для этого не блокноты, а какое-то консольное приложение, желательно. Лишь бы каждый раз не печатать/копировать, не открывать какие-то окна, а просто запустить батник, или пресет.

Уже был очень близок, нашёл реально удобный способ, но его единственным минусом оказалась скорость работы. Крупные файлы обрабатывает по 3 минуты, а действие крайне простое, казалось бы.

Отправлено: 16:47, 11-05-2018 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата akvarel_ps:
а какое-то консольное приложение, желательно. »
WSH, PowerShell — вот Вам зараз два консольных приложения . Для любителей Unix есть реализации sed под Windows.

Цитата akvarel_ps:
нашёл реально удобный способ, но его единственным минусом оказалась скорость работы. Крупные файлы обрабатывает по 3 минуты, а действие крайне простое, казалось бы. »
Крупные — это сколько? Способ — какой?

Отправлено: 16:53, 11-05-2018 | #6


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Крупные — это сколько? Способ — какой? »
Крупные - около 1500 строк

Способ - через np++ плагин, скрипт на питоне. Собсна, из-за питона и медленно)

Отправлено: 17:03, 11-05-2018 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата akvarel_ps:
Крупные - около 1500 строк »
Да ну, это копейки. Я предполагал, что речь идёт о сотнях мегабайт.

Цитата akvarel_ps:
Способ - через np++ плагин, скрипт на питоне. Собсна, из-за питона и медленно) »
Такого быть не должно. В принципе.

Вот Вам пример кода на WSH, набросанного на скорую руку на коленке, без каких-либо проверок, который на первом Вашем примере делает указанную замену:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFile

Dim objFSO
Dim objRegExp

Dim strContent


strSourceFile = "C:\Мои проекты\0157\Source.txt"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objRegExp = WScript.CreateObject("VBScript.RegExp")

With objRegExp
	.Pattern = "^(param="".+"")\s+preset="".+""\s+(shell="".+"")$"
	.Global = True
	.MultiLine = True
	.IgnoreCase = True
End With


With objFSO.OpenTextFile(strSourceFile)
	strContent = .ReadAll()
	.Close
End With

If objRegExp.Test(strContent) Then
	strContent = objRegExp.Replace(strContent, "$2 $1")
	
	With objFSO.CreateTextFile(objFSO.BuildPath(objFSO.GetParentFolderName(strSourceFile), "Result.txt"), True)
		.Write strContent
		.Close
	End With
Else
	WScript.Echo "Not found"
End If

WScript.Quit 0

Если задать ему файл из полутора тысяч строк, то время выполнения даже не заметишь. Если скормить ему файл из миллиона строк:
Скрытый текст
Код: Выделить весь код
C:\Мои проекты\0157>find.exe /v "" /c Source.txt

---------- SOURCE.TXT: 1000188

(около сорока мегабайт, тупо продублированы три Ваших строки из образца) — время выполнения всё равно займёт меньше секунды (конечно, само содержимое файла уже было в дисковом кэше, понятно):
Скрытый текст
Код: Выделить весь код
C:\Мои проекты\0157>0002.vbs
11.05.2018 17:26:59
11.05.2018 17:27:02

Так что, никак не в Python'е тут дело. Над чем там можно пыхтеть ажник целых три минуты на полутора-то тысячах строк — даже не представляю.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:32, 11-05-2018 | #8


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Вот Вам пример кода на WSH, набросанного на скорую руку на коленке, без каких-либо проверок, который на первом Вашем примере делает указанную замену: »
Вот, как вариант.

Цитата Iska:
Так что, никак не в Python'е тут дело. Над чем там можно пыхтеть ажник целых три минуты на полутора-то тысячах строк — даже не представляю. »
Там строки куда большей длины, значительно.

И на этом спасибо,
Цитата akvarel_ps:
Приветствуются вообще любые решения »

Отправлено: 17:44, 11-05-2018 | #9


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата akvarel_ps:
Там строки куда большей длины, значительно. »
Смотрим выше:
Цитата a_axe:
чтобы предложить более специализированное решение, вас попросят приложить образец реального документа, приведенных кусочков будет недостаточно. »
.

Цитата akvarel_ps:
Приветствуются вообще любые решения »
На PowerShell код будет короче, на sed — так вообще в одну строку: всё уложится в шаблон и параметры его применения.

Отправлено: 17:57, 11-05-2018 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » Офис и Текст - Нужна особая программа, для редактирования текста любого вида

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Нужна специфическая программа по замену текста daf010 Программирование и базы данных 2 08-03-2014 01:15
Офис и Текст - Нужна программа, выдергивания текста... BMW09121985 Программное обеспечение Windows 38 20-02-2014 01:03
[решено] Нужна программа для редактирования звука asus a9rp Видео и аудио: обработка и кодирование 12 20-02-2010 15:21
Программа для редактирования сайта emilj Вебмастеру 27 04-09-2009 23:26
Система - Программа для ограниченного редактирования Active Directory Dmitriy_K Программное обеспечение Windows 1 11-12-2008 11:49




 
Переход