作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
使用 formatted string literal 时, 在某种程度上可能有嵌套的 f-strings。
a = 3
b = 7
res = f"{f'{a*b}'}"
print(res) # '21'
虽然,如果内部表达式是包含字符串的变量,则同样不起作用。
a = 3
b = 7
expr = 'a*b'
res = f"{f'{expr}'}"
print(res) # 'a*b'
有没有办法使它工作并使第二个输出也为 '21'
?如果不是,阻止它的第一个和第二个字符串之间有什么区别?
最佳答案
有一些库开发了安全评估数值和逻辑表达式的函数(“安全”是关键)。
首先,设置 -
a = 3
b = 7
op = '*'
numexpr.evaluate
>>> import numexpr as ne
>>> ne.evaluate(f'{a} {op} {b}')
array(21, dtype=int32)
numexpr
足够聪明来优化你的表达式,在某些情况下甚至比 numpy 更快。使用 pip
安装。
pandas.eval
来自 Pandas 的安全 评估API 类似于 ne.evaluate
。
>>> import pandas as pd
>>> pd.eval(f'{a} {op} {c}')
12
关于python - 嵌套字符串文字插值是否可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50753043/
我是一名优秀的程序员,十分优秀!