“%”字符导致用 locals() 进行字符串替换时出错

发布于 2024-10-12 17:16:32 字数 572 浏览 6 评论 0原文

我尝试在 python 中使用 locals() 用变量替换字符串,但我可以找到一种在字符串中使用 % 字符而不会出现错误的方法。下面是一个具体示例:

color = colors_generator() #the function return a color

html = """<html><head>
<style>#square{color:%(color)s;width:100%;height:100%;}</style>    
</head>    <body>  <div id="square">  </div>
</body></html>""" % locals()

print "Content-Type: text/html\n"    
print html

结果:TypeError:格式字符串的参数不足

问题出在 100% 中的 % 字符。我怎样才能逃脱它?

I try to substitue strings with variables using locals() in python but I can find a way to use the % character inside the string without error. Here is a concrete example :

color = colors_generator() #the function return a color

html = """<html><head>
<style>#square{color:%(color)s;width:100%;height:100%;}</style>    
</head>    <body>  <div id="square">  </div>
</body></html>""" % locals()

print "Content-Type: text/html\n"    
print html

Result : TypeError: not enough arguments for format string

The problem is the % character in 100%. How can I escape it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

欢你一世 2024-10-19 17:16:32

用 % 转义 %

html = """<html><head>
<style>#square{color:%(color)s;width:100%%;height:100%%;}</style>    
</head>    <body>  <div id="square">  </div>
</body></html>""" % locals()

escape % with %

html = """<html><head>
<style>#square{color:%(color)s;width:100%%;height:100%%;}</style>    
</head>    <body>  <div id="square">  </div>
</body></html>""" % locals()
淡写薰衣草的香 2024-10-19 17:16:32

Virhilo 已经回答了你的直接问题,但是如果你发现你正在构建相当大/复杂的模板,那么可能值得看看一个完整的模板引擎:

Virhilo has already answered your direct question, but if you find you are building quite big/complicated templates it might be worth looking at a full blown template engine instead:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文