我正在创建一个小脚本来替换MediaWiki模板的参数。有两种类型的MediaWiki模板形式。 第一(内联):-
{{Infobox
|name = ABC
|work = ABC
|year = 1021
}}
第二(非内联):-
{{Infobox
|name = CBA
|work = ABC
|year = 1021
}}
现在我想用CBA替换名称。
param = sheet.cell_value(i + 1, 1)
value = sheet.cell_value(i + 1, 2)
template = sheet.cell_value(i + 1, 3)
我在python脚本中有三个变量。
{{1}}
此处模板=信息框,参数=名称,值= CBA
我在Google上进行了一些搜索,发现它将由正则表达式完成。让我们将模板内容存储在text变量中。那么我们如何找到并替换它?
请记住,MediaWiki模板可以采用两种形式(内联或非内联)。并且不应替换其他参数的相同值。
答案 0 :(得分:0)
我不知道这是否有帮助:
msg = re.sub(r"^(.*name\s*=\s*)[A-Za-z0-9]+(.*)$", r"\1CBA\2", msg, flags=re.S)
说明:
该代码用“(正则表达式匹配组)CBA(正则表达式匹配组)”替换了 msg 中的内容
这是我的测试用例:
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)