gpt4 book ai didi

python - 如何在运行时将字符串转换为格式化字符串文字?

转载 作者:行者123 更新时间:2023-12-01 09:32:23 25 4
gpt4 key购买 nike

我正在努力完成PEP 498 。也许我不太明白这个概念,但是我怎么可能将常规 Python 字符串转换为格式化字符串文字并在运行时对其进行评估?

<小时/>

假设你有一个字符串:

some_string = 'Name: {name}'

如果它是格式化的字符串文字,则以下内容将起作用:

name = 'Demo'
some_string_literal = f'Name: {name}'
some_string_literal == 'Name: Demo' # returns True

忽略这是否有意义的问题,我怎么能例如在运行时从文件中读取 some_string 的内容,将其转换为 some_string_literal 并对其求值?我对底层 CPython 实现的理解是,字符串文字在编译时解释(转换为字节代码)。

我知道的更多"explicit" option只是使用...

some_string = 'Name: {name}'
some_string.format(name = 'Demo') == 'Name: Demo' # returns True

...但这不是我想要的。

<小时/>

编辑:评论中指出,“显式”选项是我应该寻找的。我同意我在这里问的问题在很多方面肯定是不安全的。不过,我感兴趣的是是否有办法做到这一点。

最佳答案

PEP 498 说

Because the compiler must be involved in evaluating the expressions contained in the interpolated strings, there must be some way to denote to the compiler which strings should be evaluated.

换句话说,f 对字符串文字的解析方式有影响,就像 r 一样。因此,您必须调用解析器才能使插值工作。

您想要将数据读入 some_string 并将其转换为可解析为 f 字符串的字符串文字。这与想要将数据读入 some_lambda_expression 并将其转换为 lambda 表达式没有太大区别。当然,您可以使用 eval 来完成此操作,因为 eval 是一种通过调用解析器将字符串变量的内容转换为代码的方法。我知道这不是你想要的。但是如果不调用解析器,就无法将 some_string 解析为 f-string,因此你无法得到你想要的东西。 p>

关于python - 如何在运行时将字符串转换为格式化字符串文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49852860/

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