如何推迟/推迟 f 字符串的评估?

2024-03-29

我正在使用模板字符串生成一些文件,并且我喜欢为此目的而使用的新 f 字符串的简洁性,以减少我以前的模板代码,如下所示:

template_a = "The current name is {name}"
names = ["foo", "bar"]
for name in names:
    print (template_a.format(**locals()))

现在我可以这样做,直接替换变量:

names = ["foo", "bar"]
for name in names:
    print (f"The current name is {name}")

然而,有时在其他地方定义模板是有意义的——在代码的更高层,或者从文件或其他东西导入。这意味着模板是一个静态字符串,其中包含格式化标签。字符串必须发生一些事情才能告诉解释器将该字符串解释为新的 f 字符串,但我不知道是否存在这样的事情。

有没有办法引入一个字符串并将其解释为 f 字符串以避免使用.format(**locals()) call?

理想情况下,我希望能够像这样编写代码......(其中magic_fstring_function这是我不明白的部分的来源):

template_a = f"The current name is {name}"
# OR [Ideal2] template_a = magic_fstring_function(open('template.txt').read())
names = ["foo", "bar"]
for name in names:
    print (template_a)

...使用所需的输出(无需读取文件两次):

The current name is foo
The current name is bar

...但我得到的实际输出是:

The current name is {name}
The current name is {name}

将字符串评估为 f 字符串(及其全部功能)的一种简洁方法是使用以下函数:

def fstr(template):
    return eval(f"f'{template}'")

然后你可以这样做:

template_a = "The current name is {name}"
names = ["foo", "bar"]
for name in names:
    print(fstr(template_a))
# The current name is foo
# The current name is bar

而且,与许多其他建议的解决方案相比,您还可以执行以下操作:

template_b = "The current name is {name.upper() * 2}"
for name in names:
    print(fstr(template_b))
# The current name is FOOFOO
# The current name is BARBAR
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何推迟/推迟 f 字符串的评估? 的相关文章

  • 查找其他列表项中列表项的列表索引

    我有一个长字符串列表 我想获取与另一个列表中的字符串子字符串匹配的列表元素的索引 使用列表理解可以轻松检查列表项是否包含列表中的单个字符串 例如这个问题 https stackoverflow com questions 4843158 c
  • 使用 numba 计算向量和矩阵中的行之间的余弦相似度

    找到了这个gist https gist github com FedericoV 0e7d6d8c8794a99a7a42使用 numba 快速计算余弦相似度 import numba numba jit target cpu nopyt
  • 实现一个java UDF并从pyspark调用它

    我需要创建一个在 pyspark python 中使用的 UDF 它使用 java 对象进行内部计算 如果它是一个简单的 python 我会做类似的事情 def f x return 7 fudf pyspark sql functions
  • Python 中的类位于不同的文件中吗?

    与 Java 或 php 非常相似 我习惯将类与文件分开 Python 中也是同样的情况吗 另外 我应该如何命名该文件 像classname py一样小写还是像ClassName py一样 如果我想从此类创建一个对象 我是否需要做一些特殊的
  • AMD plaidml 与 CPU Tensorflow - 意外结果

    我目前正在运行一个简单的脚本来训练mnist数据集 通过 Tensorflow 通过我的 CPU 运行训练给了我49us sample和使用以下代码的 3e 纪元 CPU import tensorflow as tf mnist tf k
  • Spark MLLib 存在问题,导致概率和预测对于所有内容都相同

    我正在学习如何将机器学习与 Spark MLLib 结合使用 目的是对推文进行情感分析 我从这里得到了一个情感分析数据集 http thinknook com wp content uploads 2012 09 Sentiment Ana
  • Python中基于行输入的条件求和

    我正在尝试用Python 做一个条件和积 简化的思路如下 A 1 1 2 3 3 3 B 0 50 0 25 0 99 0 80 0 70 0 20 我想要作为输出 Total1 0 50 1 0 25 1 Total2 0 99 2 To
  • 在 Cartopy 中隐藏高纬度非矩形投影的右侧轴(纬度)标签

    我试图使用以下命令隐藏此 Cartopy 地图中的右侧标签 又名纬度 right labels False但仅适用于某些值 但是 可以使用隐藏顶部 底部标签top labels False and bottom label False 重现
  • 我应该如何在 Python 中将 HTTPHandler 与 RotatingFileHandler 链接起来?

    我需要创建一个系统 将嵌入式系统中生成的日志消息远程记录在服务器上并存储在轮换日志文件中 由于网络通信的限制 日志消息必须通过HTTP协议传输 服务器已经运行了Flask http flask pocoo org 基于 HTTP 服务器 因
  • Python elasticsearch DSL 聚合/每个文档嵌套值的度量

    我试图找到 2 级嵌套中的最小值 每个文档单独的最小值 到目前为止 我能够进行聚合 计算搜索结果中所有嵌套值的最小值 但无需按文档进行分隔 我的示例架构 class MyExample DocType myexample id Intege
  • python中根据变量类型处理数据子集

    我将以下数据存储在 csv df sample csv 中 我将列名放在名为 cols list 的列表中 df 数据 样本 df data sample pd DataFrame new video BASE SHIVER PREFER
  • 如何使用Python优化大型数据集的API调用?

    客观的 将地址列表发送到 API 并提取某些信息 例如 指示地址是否位于洪水区域的标志 Solution 适用于小数据的 Python 脚本 Problem 我想针对大输入优化当前的解决方案 如何提高 API 调用的性能 如果我有 100
  • 如何使用python将下载的音频文件扩展名重命名为mp3

    目前 我正在尝试根据艺术家姓名和歌曲标题将 YouTube 音乐视频下载为音频文件 下载所有视频后 我尝试将所有音频文件从 webm 或 mp4 扩展名重命名为 mp3 但似乎我在将文件名和扩展名更改为 mp3 时遇到了一些错误 我的代码基
  • 如何在 Python 中将列表变量传递给 subprocess.call 命令

    我有一个清单 apps apps append wq35a5huqlja45jsyukrpmwuiayovrmh apps append q7mimvgduueernwvw4y22t5huemykntw apps append pmudbp
  • 在 python matplotlib 中格式化损坏的 y 轴

    我正在 matplotlib 中处理一个 相当复杂的 条形图 它包含来自多个源的摘要数据 每个源都沿 x 轴标记 y 轴上有一系列结果 许多结果都是异常值 我尝试使用断开的 y 轴来显示这些结果 而不会使用以下组合来扭曲整个图表这个方法 h
  • 在matplotlib中绘制曲线连接点

    所以我试图绘制曲线来连接点 这是我正在使用的代码 def hanging line point1 point2 a point2 1 point1 1 np cosh point2 0 np cosh point1 0 b point1 1
  • AIORedis 和 PUB/SUB 不是 asnyc

    I used aioredis http aioredis readthedocs org en latest examples html用于编写异步服务 该服务将侦听某个通道并以异步方式运行一些命令 基本上我从示例页面 http aior
  • Flask-SQLAlchemy:如何有条件地插入或更新行

    我的应用程序使用 Flask Flask SQLAlchemy Flask WTF 和 Jinja2 的组合 在当前的版本中 我有一个设置表 该表只有一条记录和一个字段 最初该表包含零条记录 我想要实现的是 鉴于数据库中不存在任何条目 则显
  • App Engine、PIL 和叠加文本

    我正在尝试在 GAE 上的图像上覆盖一些文本 现在他们公开了 PIL 库 这应该不是问题 这就是我所拥有的 它有效 但我不禁认为我应该直接写入背景图像 而不是创建单独的覆盖图像然后合并 我可以用吗Image frombuffer http
  • 为什么这个多处理代码会失败? [复制]

    这个问题在这里已经有答案了 def sample pass Process target sample start Process target sample start 上面的代码失败并出现错误 已尝试在当前进程之前启动新进程 进程已完成

随机推荐

  • 如何在 Visual Studio 2008 中保持文档选项卡按上次使用情况排序

    注册表更改是什么 告诉 Visual Studio 始终将当前文档放置在窗口的左侧 默认实现是这样的 如果您打开了 10 个文档 并且您正在编辑第 5 个文档 那么它的选项卡将是该组中的第 5 个选项卡 随着注册表的更改 当您单击第五个文档
  • numpy.array 的总和部分

    假设我有以下数组 a np array 1 2 3 4 5 6 7 8 9 10 11 12 3 5 6 7 8 9 我想对第一行的前两个值求和 1 2 3 然后是接下来的两个值 3 4 7 进而5 6 11 对每一行依此类推 我想要的输出
  • HTML5 章节与文章

    我有一个由各种 部分 组成的页面 例如视频 新闻源等 我有点困惑如何用 HTML5 表示这些 目前我将它们作为 HTML5 section s 但经过进一步检查 看起来更正确的标签是 section
  • 如何从列表创建分组条形图

    我正在尝试绘制一个条形图 它比较两种不同情况下的多个项目的数量 所需的输出将是一个条形图 其中 4 4 8 个条形图彼此相邻 指示每种情况的每种类型的数量 这是我编写的初始代码 它没有给出我的期望 我该如何修改这个 import numpy
  • 如何在 Spring Data Elasticsearch 2.2.3.RELEASE 中配置 Rest 高级客户端的套接字超时

    我将 Spring Boot Starter Data Elasticsearch 2 2 3 RELEASE 与 Elasticsearch v6 8 6 结合使用 我配置了 RestHighLevelClient 以连接到集群 现在我在
  • 如何在 React 中将 JSON 响应呈现为下拉列表

    我目前正在尝试获取从 API 收到的一些 JSON 数据 并将其放入一个非常简单的 React 应用程序的下拉列表中 到目前为止 这是我的 DropDown 组件 import React from react var values fet
  • 如何使用boost预处理器生成访问器?

    例如 class A int m x float m y double m z int x const return m x float y const return m y double z const return m z 变得像 cl
  • 将忽略的配置文件添加到 git repo 作为示例

    我有一个正在开发的应用程序的存储库 其中包含配置文件 目前 我分发的是 dist扩展名 并让用户在编辑文件之前重命名该文件 nate myAwesomeApp git ls files gitignore README config dis
  • Nginx 没有将 websocket 升级响应传递回客户端?

    我在精确的 64 vagrant box 上使用 Nginx Websockets 并使用 c mono 作为应用程序服务器 目标是直接通过 Nginx 提供静态内容 并在同一端口上处理普通的 http 服务请求 在 service 上 和
  • YAML Azure Devops:步骤任务引用无效。任务名称不明确

    我正在尝试使用 AzureRmWebAppDeployment 任务将 WebJobs 部署到应用程序服务 Azure 应用程序服务部署 以下是以下 YAML 代码 任务 AzureRmWebAppDeployment 4 task Azu
  • 如何请求增加 Google Cloud 中的 GPU 配额

    我一直在尝试请求增加 Compute Engine 的 GPU 配额 因为当我尝试启动实例时 Google Cloud 说我的 GPU 配额为 0 我升级了帐户 但我似乎不知道需要做什么来增加配额 我看过很多教程 但自从这些教程发布以来 云
  • 将 BSTR 转换为 LPCWSTR

    这是我的需要 BSTR l strArgs LPCWSTR sth OutputDebugStringW sth 如何将 BSTR 转换为 LPCWSTR 是否有任何仅标头的库可以将任何字符串类型 微软 转换为 LPCWSTR 类型 只需覆
  • 使用java 8流的if-else条件[重复]

    这个问题在这里已经有答案了 设想 有一种情况我需要设置一些值List使用 Java 8 流 API 基于某些字段条件的对象 下面是对象的示例User public class User private int id private Stri
  • 在Python中将*args传递给string.format?

    是否可以将 args 传递给 string format 我有以下功能 classmethod def info cls component msg args Log an info message cls log cls Level IN
  • Java:定义错误的finalize方法会导致内存泄漏

    在java中 如果没有强引用指向x并且x符合垃圾收集条件 则垃圾收集将调用对象x的finalize方法 如果finalize方法永远不会终止 会导致内存泄漏吗 public class X protected void finalize w
  • Reactjs:如何自定义多个电子邮件添加和编辑的字段

    在我的项目中 有一个表单字段可以添加多封电子邮件 为此 我正在使用 react multi email 包 通过使用此包可以添加和删除电子邮件标签 但现在我也想要编辑操作 我是 ReactJS 的初学者 所以我不知道如何自定义或添加任何额外
  • Win32 - 作为普通用户进程启动最高可用子进程

    假设您的 Windows 用户帐户位于 Admin 组中 启用了 UAC 并且您正在以普通用户权限运行某些程序 A A从不要求提升 也从未得到提升 现在假设 A 想要启动程序 B 该程序的清单中具有 HighestAvailable 如果
  • 如何验证来自不同发行者的 jwt 令牌

    我正在使用可操作的消息 通过 Outlook Web 应用程序 来调用逻辑应用程序 因此我在请求中得到了一个不记名令牌 操作 授权 承载者eyJ0eXAi 调用堆栈 Outlook web app gt Logic App gt my en
  • os.path.split,更改文件名而不影响路径

    我已经关注了Python获取文件名并更改并将其保存在变量中 https stackoverflow com questions 18944357 python get file name and change save it in vari
  • 如何推迟/推迟 f 字符串的评估?

    我正在使用模板字符串生成一些文件 并且我喜欢为此目的而使用的新 f 字符串的简洁性 以减少我以前的模板代码 如下所示 template a The current name is name names foo bar for name in