|
0 / 0 / 0
Регистрация: 31.08.2023
Сообщений: 20
|
|
Удаление участка текста в xml документе31.08.2023, 14:46. Показов 2302. Ответов 21
Здравствуйте, подскажите, пожалуйста, что я делаю не так?
У меня есть .xml файлы и я замучился вручную (через поиск) находить и удалять в них один и тот же участок текста, поэтому установил плагин "python script" в NotePad++. Мне нужно что бы скрипт нашел участок начинающийся с "<cellStyleXfs count" и заканчивающийся "</cellStyleXfs>" и грохнул всё, что находится между этими маркерами вместе с ними. 1) Создаю новый скрипт: Плагины -> python script -> New script 2) Пишу скрипт: ```python import re # Получить содержимое открытого документа content = editor.getText() # Определить участок текста, который нужно удалить start_tag = "<cellStyleXfs count" end_tag = "</cellStyleXfs>" # Создать регулярное выражение для поиска участка regex = re.compile(re.escape(start_tag) + r".*?" + re.escape(end_tag), re.DOTALL) # Удалить участок текста из содержимого new_content = regex.sub("", content) # Заменить содержимое документа на обновленное editor.setText(new_content) ``` 3) Сохраняю скрипт 4) Открываю XML документ в котором нужно удалить участок текста 5) Запускаю скрипт: Плагины -> python script -> Scripts -> -выбираю мой скрипт- И программа просто закрывается... GPT говорит, что, видимо, скрипт неверный.
0
|
|
| 31.08.2023, 14:46 | |
|
Ответы с готовыми решениями:
21
Удаление совпадений текста в документе MS Word Замена текста в существующем документе Word через Область сопоставления XML |
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
||||||
| 31.08.2023, 15:30 | ||||||
2
|
||||||
|
0 / 0 / 0
Регистрация: 31.08.2023
Сообщений: 20
|
|
| 31.08.2023, 15:59 [ТС] | |
|
Возможно, проблема с Notepad - все равно закрывается, попробую в Sublime Text
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 31.08.2023, 16:02 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 31.08.2023
Сообщений: 20
|
|
| 31.08.2023, 16:20 [ТС] | |
|
у меня портативный notepad и на компе нет ничего, ни питона, ничего, возможно из-за этого у меня ничего не работает, попробую дома
по крайней мере Visual Studio Code не хочет ничего делать из-за отсутствия какого-то интерпретатора Питона - видимо, нужен Питон, как я понял
0
|
|
|
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
|
|
| 31.08.2023, 18:42 | |
|
peppercat, питон не нужен..........
у меня все скрипты начинаются строкой: # -*- coding: utf-8 -*- понятно что это коммент, но когда я впервые знакомился с "python script" в NotePad++ там так было сказано, чем это вызвано уже не помню....
0
|
|
|
Любознательный
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,215
|
||
| 31.08.2023, 20:16 | ||
|
В NP++, если ничего не поменялось с развитием и я ничего не перепутал (не пользуюсь, предпочитаю AkelPad), есть собственная возможность использования регэкспов...
1
|
||
|
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
|
|
| 01.09.2023, 08:14 | |
|
YuS_2, никто не спорит, что в Блокноте++ если нажать контрол+эф, ввести в поиск <cellStyleXfs count.*</cellStyleXfs> и выбрать радиокнопку Регулярные выражения
где ".*" – точка со звёздочкой представляют любое количество символов в строке то найдётся нужное и можно заменить на "" - то есть удалить, но ТС пошёл этим путём видимо потому, что аппетит вырастет во время еды и получит новый опыт.....
0
|
|
|
0 / 0 / 0
Регистрация: 31.08.2023
Сообщений: 20
|
|||
| 01.09.2023, 11:37 [ТС] | |||
|
Добавлено через 54 секунды
Поэтому я решил попробовать ваш вариант с AkelPad и в её портативной версии мне удалось без проблем автоматизировать поиск и удаление всех необходимых участков текста через JavaScript (как там использовать пайтон скрипты - я не вкурил) В описании плагина для AkelPad мое внимание привлекло следующее: "работать с файлами используя FileSystemObject объект, создавать ярлыки, работать с реестром Windows используя WshShell объект, или работать с функциями сети используя WshNetwork объект. Также Вы можете создавать и запускать скрипты, которые взаимодействуют с внешними приложениями, поддерживающими Automation (такими как Word и Excel)." Дело в том, что .xml мне приходится редактировать именно внутри Excel файлов, значит ли это, что с помощью этого плагина можно автоматизировать не только поиск и удаление фрагментов, но и выгрузку .xml из Excel с последующим редактированием и возвращением назад в Excel? Добавлено через 9 минут
0
|
|||
|
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
|
|
| 01.09.2023, 11:51 | |
|
peppercat, если вы работаете в Excel, тогда там есть VBA - который справится с этой задачей
0
|
|
|
0 / 0 / 0
Регистрация: 31.08.2023
Сообщений: 20
|
|||
| 01.09.2023, 12:02 [ТС] | |||
|
Добавлено через 8 минут Сейчас мне удалось автоматизировать процесс лишь отчасти, т.е. я по-прежнему вручную вытаскиваю нужные .xml, открываю их в AcelPad, запускаю скрипты, возвращаю xml в Excel.
0
|
|||
|
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
|
||
| 01.09.2023, 12:10 | ||
|
надо начинать с переменной, например path = "I:\replaces" в VBA path = r"I:\replaces" в Python и вперёд в цикле обращаемся к xml файлам этой папки и делаем то, что нужно
0
|
||
|
0 / 0 / 0
Регистрация: 31.08.2023
Сообщений: 20
|
|
| 01.09.2023, 12:19 [ТС] | |
|
Мы же сейчас про вот эту штуку говорим?
0
|
|
|
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
|
|
| 01.09.2023, 12:21 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 31.08.2023
Сообщений: 20
|
|
| 01.09.2023, 12:39 [ТС] | |
|
А, понял
0
|
|
|
0 / 0 / 0
Регистрация: 31.08.2023
Сообщений: 20
|
|
| 01.09.2023, 13:34 [ТС] | |
|
Пытаюсь осуществить задуманное через VBA Excel, но он почему-то сначала какие-то связи не находит, а потом и сам styles.xml
Option Explicit Sub RemoveFragmentInStylesXML() Dim wb As Workbook Dim filePath As String ' Выбор Excel файла With Application.FileDialog(msoFileDialogOpen ) .Title = "Выберите Excel файл" .Filters.Clear .Filters.Add "Excel файлы", "*.xls*" If .Show = -1 Then filePath = .SelectedItems(1) Set wb = Workbooks.Open(filePath) Else Exit Sub End If End With ' Удаление фрагмента в styles.xml Dim xmlPath As String Dim xmlContent As String Dim startPos As Long Dim endPos As Long ' Путь к styles.xml xmlPath = wb.Path & "\xl\styles.xml" ' Проверка наличия файла If Not Dir(xmlPath) <> "" Then MsgBox "Файл styles.xml не найден.", vbExclamation Exit Sub End If ' Открытие файла styles.xml Open xmlPath For Input As #1 xmlContent = Input$(LOF(1), #1) Close #1 ' Поиск позиций фрагмента startPos = InStr(xmlContent, "<cellStyles count") endPos = InStr(xmlContent, "</cellStyles>") + Len("</cellStyles>") - 1 If startPos > 0 And endPos > 0 Then ' Удаление фрагмента xmlContent = Left(xmlContent, startPos - 1) & Mid(xmlContent, endPos + 1) ' Сохранение изменений Open xmlPath For Output As #1 Print #1, xmlContent Close #1 MsgBox "Фрагмент успешно удален из styles.xml.", vbInformation Else MsgBox "Фрагмент не найден в styles.xml.", vbExclamation End If ' Закрытие Excel файла wb.Close SaveChanges:=True End Sub
0
|
|
|
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
|
||
| 01.09.2023, 13:43 | ||
|
вам в ветку
также не понятно если есть Выбор Excel файла тогда зачем нужна Проверка наличия файла
0
|
||
|
Любознательный
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,215
|
|||
| 01.09.2023, 15:09 | |||
|
но это всё лирика и оффтоп здесь... Вам необходимо сформулировать задачу (не вообще, что хотелось бы, а более конкретно), выбрать инструмент и задавать вопрос уже в соответствующем разделе... наверное, так быстрее помощь получите.
0
|
|||
|
0 / 0 / 0
Регистрация: 31.08.2023
Сообщений: 20
|
||||||||
| 01.09.2023, 15:25 [ТС] | ||||||||
|
Проблема в том, что VBA не воспринимает эксель-файл как папку, из которой можно вытащить styles.xml для редактирования. Но GPT, видимо, устал на сегодня и отдыхает, продолжу в понедельник.
А задача, как мне казалось, простая: возможность выбрать файл Excel, далее скрипт сам лезет в его styles.xml (\xl\styles.xml), удаляет там фрагмент текста (известно начало и конец фрагмента), сохраняет изменения в styles.xml. Последний барьер, с которым столкнулся, VBA, видимо, не воспринял файл эксель как папку (что умеет какой-нибудь win-RAR), из которой можно вытащить требуемый xml.
0
|
||||||||
|
Любознательный
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,215
|
||
| 01.09.2023, 18:37 | ||
|
А по поводу Excel, сразу можно заглянуть сюда и установить модуль, он сильно упростит работу по автоматизации...
0
|
||
| 01.09.2023, 18:37 | |
|
Помогаю со студенческими работами здесь
20
Удаление в XML-файле текста после определённого символа Xml-сериализация при подключении к серверу более одного клиента (в документе xml (0 0) присутствует ошибка)
Извлечение определенного участка текста Символ & в XML-документе (RSS) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|