Найти и заменить параметр шаблона MediaWiki - PullRequest
0 голосов
/ 22 июня 2019

Я создаю небольшой скрипт для замены параметра MediaWiki Template. Существует два типа формы шаблона MediaWiki. Во-первых (встроенный): -

{{Infobox|name = ABC |work = ABC |year = 1021 }}

Второй (не встроенный): -

{{Infobox
|name = ABC
|work = ABC
|year = 1021
}}

Теперь я хочу заменить имя на CBA.

{{Infobox
|name = CBA
|work = ABC
|year = 1021
}}

У меня есть три переменные в скрипте Python.

            param = sheet.cell_value(i + 1, 1)
            value = sheet.cell_value(i + 1, 2)
            template = sheet.cell_value(i + 1, 3)

Здесь шаблон = Infobox, param = имя, значение = CBA

Я сделал несколько поисков в Google и обнаружил, что это будет сделано регулярным выражением. Давайте сохраним содержимое шаблона в текстовой переменной. Так как же нам найти и заменить его?

Помните, что шаблон MediaWiki может быть в обеих формах (встроенный или не встроенный). и он не должен заменять те же значения других параметров.

1 Ответ

0 голосов
/ 22 июня 2019

Не знаю, поможет ли это:

msg = re.sub(r"^(.*name\s*=\s*)[A-Za-z0-9]+(.*)$", r"\1CBA\2", msg, flags=re.S)

Объяснение:

Код заменяет содержимое в msg на "(группа соответствия регулярных выражений) CBA(группа соответствия регулярному выражению) "

Вот мой тестовый пример:

import re

pattern = r"name\s*=\s*([A-Za-z0-9]+)"

msg = '{{Infobox|name = ABC |work = ABC |year = 1021 }}'

print(msg)

msg_long = '{{Infobox \
|name = CBA \
|work = ABC \
|year = 1021 \
}}'

msg = re.sub(r"^(.*name\s*=\s*)[A-Za-z0-9]+(.*)$", r"\1CBA\2", msg, flags=re.S)

print(msg)

print(msg_long)

msg_long = re.sub(r"^(.*name\s*=\s*)[A-Za-z0-9]+(.*)$", r"\1CBA\2", msg_long, flags=re.S)

print(msg_long)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...