查找并替换MediaWiki temp的参数

2024-05-16 11:40:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个小脚本来替换MediaWiki模板的参数。有两种类型的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)

此处template=Infobox,param=name,value=CBA

我在google上做了一些搜索,发现它将由regex完成。让我们将模板内容存储在文本变量中。那么我们如何找到并替换它呢

请记住,MediaWiki模板可以是两种形式(内联或非内联)。它不应该替换其他参数的相同值


Tags: name模板参数paramvaluecelltemplateyear
1条回答
网友
1楼 · 发布于 2024-05-16 11:40:55

我不知道这是否有用:

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

说明:

代码将msg中的内容替换为“(regex match group)CBA(regex match group)”

这是我的测试用例:

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)

相关问题 更多 >