gpt4 book ai didi

python - 在遗留代码评估的格式字符串中执行计算

转载 作者:行者123 更新时间:2023-11-28 20:58:24 26 4
gpt4 key购买 nike

我正在使用函数 foo(来 self 无法修改的外部包),它接受、填补空白并输出一个字符串。我想通过对该字符串中允许的空格填充符进行简单的算术运算来操纵输出。

更明确地说:

我目前调用 foo('Finished {n} out of {N}') 并且我得到,比方说,Finished 3 out of 5 jobs

我想执行 foo({N-n} left) 以得到 2 个剩余的作业

目前这不起作用。我怀疑 foo 只是在传递给它的字符串上调用 format ,显然 N-n 甚至不是有效的 Python 变量名。

问题:有没有办法欺骗 format 来进行我想要的计算?欢迎丑陋的黑客。

编辑:这是针对 Python 3 的EDIT2:我无权访问变量 Nn。它们在 foo

内部

EDIT3:什么是可能的,什么不是的最小例子,假设 foo 实际上只是对传递给它的字符串执行 .format:

import sys
def foo(s):#This function cannot be changed
N=5
n=3
sys.stderr.write(s.format(N=N,n=n))
foo('Finished {n} out of {N}')
foo('{N-n} left') # Error

最佳答案

在 Python 3.6+ 中,您可以使用格式化字符串文字 ( PEP 498 ),也称为 f 字符串。

n = 3
N = 5

x = f'Finished {n} out of {N}'
y = f'{N-n} jobs left'

结果:

print(x, y, sep='\n')

Finished 3 out of 5
2 jobs left

如果您愿意,您可以简单地将它包装在一个函数中。

关于python - 在遗留代码评估的格式字符串中执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51742085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com