python - 如何在 Python 中使用嵌套的 % 打印格式和 exec?
问题描述
我不确定问题标题是否直观,但让我在这里详细解释一下。
我想使用exec
withfor
循环来有效地编写具有重复模式的代码。为了说明,这里有一个非常简单的例子
channels = {'q_qp': 0, 'q_qbp': 1, 'q_q': 2, 'q_qb': 3, 'q_g': 4, 'g_g': 5}
for channel in channels:
string = """\
print '%s'
""" % channel
exec string
这工作得很好,但是当我尝试在变量中添加格式化打印时,棘手的部分就出现了string
,这里是
import time
channels = {'q_qp': 0, 'q_qbp': 1, 'q_q': 2, 'q_qb': 3, 'q_g': 4, 'g_g': 5}
for channel in channels:
string = """\
print '%s'
nt = time.time()
print 'now the cpu time is %f' % nt
""" % channel
exec string
显然%
,第二print
条语句中的语句给编译器造成了混乱。我尝试使用%%
forstring
将其逐字解释为百分号,但它不会选择这样做。
我想知道如何在 Python 中实现这种嵌套格式的打印,有人可以帮我吗?
提前致谢!
解决方案
print 'now the cpu time is %%f' %% nt
应该可以正常工作。
但是您可以使用format
来避免%
符号加倍:
string = """\
print '{}'
nt = time.time()
print 'now the cpu time is %f' % nt
""".format(channel)
“游戏”是根据您的字符串包含的字符使用最佳格式。在您的情况下,您使用{}
的不多,所以format
是最好的方法。
推荐阅读
- javascript - 为什么我在nodejs中的代码出错并要求我写catch,但我已经在代码中说了
- javascript - 使用 php 代码将引导轮播链接到数据库
- python-3.x - 如何创建滑动窗口附加最高阈值为 70 的字典?
- typescript - 无法使用“this”指针将方法用作回调
- html - 如何创建一个仅在单击/切换时才显示某些输入的按钮?
- python - 在 Python 中从 JWT 令牌中检索一个值
- python - 模型不训练和输出相同的类
- java - 未找到重新运行文件以在黄瓜中执行失败的功能场景
- image - MATLAB中图像的双数据类型
- ios - 如何在swiftui中对齐来自不同堆栈/容器的元素?