REGEX - Нахождение указанного c XML тега и его разбор - PullRequest
0 голосов
/ 26 марта 2020

My xml выглядит следующим образом:

<example>
<Test_example>Author%5773637864827/Testing-75873874hdueu47.jpg</Test_example>
<Test_example>Auth0r%5773637864827/Testing245-75873874hdu6543u47.ts</Test_example>
<newtag>

Этот XML имеет 100 строк, и меня интересует тег "<Test_example>". В этом теге я хочу удалить все, пока он не увидит /, а когда он увидит -, удалит все, пока не увидит полную остановку.

Конечный результат должен быть

<Test_example>Testing.jpg</Test_example>
<Test_example>Testing245.ts</Test_example>

Я новичок и хотел бы помочь с этим. Мне нужно решение регулярных выражений. Код, который я запустил до того, как это найти и заменить, выглядит следующим образом.

new = open('test.xml')

with open('test.xml', 'r') as f:
    onw = f.read().replace('new:', 'ext:')

1 Ответ

0 голосов
/ 26 марта 2020

На основе ваших данных выборки я придумал следующее регулярное выражение, и вот как я его протестировал.

import re

example_string = """<example>
<Test_example>Author%5773637864827/Testing-75873874hdueu47.jpg</Test_example>
<Test_example>Auth0r%5773637864827/Testing245-75873874hdu6543u47.ts</Test_example>
<newtag>"""

my_list = example_string.split('\n')

my_regex = re.compile('(<Test_example>)\S+%\d+/(\S+)-\S+(\.\S+)(</Test_example>)')

for line in my_list:
    if re.search(my_regex, line):
        match = re.search(my_regex, line)
        print(match.group(1) + match.group(2) + match.group(3) + match.group(4))

Вывод:

<Test_example>Testing.jpg</Test_example>
<Test_example>Testing245.ts</Test_example>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...