python - 带引号的字符串格式
问题描述
说我有一个清单
list = ['a', 'b', 'c']
我想创建以下字符串:
foo_a = bar['a']
foo_b = bar['b']
foo_c = bar['c']
我尝试了以下方法:
for i in list:
print("foo_{} = bar['{{}}']".format(i))
但输出是
foo_a = bar['{}']
foo_b = bar['{}']
foo_c = bar['{}']
我已阅读为什么 python F-string 插值的这种用法用引号括起来?但第二种方法似乎不再起作用了。
解决方案
您有两个{}
占位符,但只有一个变量。因此,您需要让这些占位符知道他们需要使用相同的占位符。此外,由于某种原因,您在第二个占位符中使用了双括号。这用于“转义”大括号,因此{{}}
将成为{}
(而不是用作实际的占位符)。
所以在解决了这两个问题之后:
>>> list = ['a', 'b', 'c']
>>> for i in list:
print("foo_{i} = bar['{i}']".format(i=i))
# print("foo_{0} = bar['{0}']".format(i))
foo_a = bar['a']
foo_b = bar['b']
foo_c = bar['c']
或使用f-strings
(对于 Python >= 3.6
):
for i in list:
print(f"foo_{i} = bar['{i}']")
为了更好地理解占位符的使用,请阅读PyFormat中的更多内容,特别是基本格式部分了解有关位置占位符的信息,以及命名占位符部分用于 - 命名良好的占位符。
推荐阅读
- git - 命令提示符中的奇怪错误,尝试使用 PIP 安装包
- ruby - 使用“bundle gem help”创建 ruby gem 后没有测试目录
- sql - 将标识列添加到雪花中的现有表?
- mysql - MySQL SELECT Query 假设 1623x=1623 为 True
- mysql - 使用 PHP 加入 MYSQL
- java - 使用 Zuul 网关过滤入站请求
- javascript - 如何选择获取请求中收到的所有数据并检查每个项目
- ruby-on-rails - Ruby 唯一的用户名生成器
- docker-compose - 如何在 gitlab 上测试在 docker-compose 中运行的容器
- python - 在 Matplotlib 中绘图不覆盖 y 轴