查找和替换 python 脚本

问题描述 投票:0回答:2

我有一个 python 脚本来更改 html 文件的语法。具体来说,我想将 html 文件从 mandrill 语法转换为 mustache 语法。我目前使用的脚本可以很好地更改除一个语法之外的所有语法。

我有几行语法与此类似的代码

<tr mc:edit="MerchantCustomHeader"></tr>

上面的语法是 mandrill,等效的 mustache 语法是。

{{MerchantCustomHeader}}

我遇到的问题是在整个 html 文件中进行此更改。这是一个例子

original_text = 'font mc:edit="OrderReceiveDate" blah blah this is a test so i do not know what to "really" do bbbecause i am just writing this "OrderReceiveDate" mc:edit="OrderReceiveDate"'
replacement_text = original_text.replace('mc:edit="', '{{').replace('"', '}}', 1)
print(replacement_text)

使用上面的代码,这是我得到的输出:

font {{OrderReceiveDate}} blah blah this is a test so i do not know what to "really" do bbbecause i am just writing this "OrderReceiveDate" {{OrderReceiveDate"

更改仅适用于 mc:edit 的第一个实例,在第二个实例中,mc:edit 被正确地替换为双花括号“{{”,但双引号未替换为右花括号。如果引号是 mc:edit 标记的一部分,我只想用右大括号替换引号,就像这样 mc:edit="OrderReceiveDate" 如果它只是像这样的双引号 "OrderReceiveDate" 是否有错误我正在我的脚本中制作。替换功能未应用于 mc:edit 的所有实例?

我已将我尝试过并期望发生的事情放在上面。

python html mustache mandrill
2个回答
0
投票

去掉替换函数中的

1

replacement_text = original_text.replace('mc:edit="', '{{').replace('"', '}}')

这将替换所有出现的字符串。


0
投票

尝试正则表达式:

pattern = r'mc:edit="([^"]+)"'
replacement_text = re.sub(pattern, r'{{\1}}', original_text)

输出:

font {{OrderReceiveDate}} blah blah this is a test so i do not know what to "really" do bbbecause i am just writing this "OrderReceiveDate" {{OrderReceiveDate}}
© www.soinside.com 2019 - 2024. All rights reserved.