|
0 / 0 / 0
Регистрация: 31.08.2023
Сообщений: 20
|
|
Удаление участка текста в xml документе31.08.2023, 14:46. Показов 2357. Ответов 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
|
|
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
|
|
| 31.08.2023, 18:42 | |
|
peppercat, питон не нужен..........
у меня все скрипты начинаются строкой: # -*- coding: utf-8 -*- понятно что это коммент, но когда я впервые знакомился с "python script" в NotePad++ там так было сказано, чем это вызвано уже не помню....
0
|
|
|
Любознательный
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
|
||
| 31.08.2023, 20:16 | ||
|
В NP++, если ничего не поменялось с развитием и я ничего не перепутал (не пользуюсь, предпочитаю AkelPad), есть собственная возможность использования регэкспов...
1
|
||
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
|
|
| 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
|
|||
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
|
|
| 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
|
|||
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
|
||
| 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
|
|
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
|
|
| 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
|
|
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
|
||
| 01.09.2023, 13:43 | ||
|
вам в ветку
также не понятно если есть Выбор Excel файла тогда зачем нужна Проверка наличия файла
0
|
||
|
Любознательный
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
|
|||
| 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
|
||||||||
|
Любознательный
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
|
||
| 01.09.2023, 18:37 | ||
|
А по поводу Excel, сразу можно заглянуть сюда и установить модуль, он сильно упростит работу по автоматизации...
0
|
||
| 01.09.2023, 18:37 | |
|
Помогаю со студенческими работами здесь
20
Удаление в XML-файле текста после определённого символа Xml-сериализация при подключении к серверу более одного клиента (в документе xml (0 0) присутствует ошибка)
Извлечение определенного участка текста Символ & в XML-документе (RSS) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|