首页 > 解决方案 > 带引号的字符串格式

问题描述

说我有一个清单

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 插值的这种用法用引号括起来?但第二种方法似乎不再起作用了。

标签: pythonstring-formatting

解决方案


您有两个{}占位符,但只有一个变量。因此,您需要让这些占位符知道他们需要使用相同的占位符。此外,由于某种原因,您在第二个占位符中使用了双括号。这用于“转义”大括号,因此{{}}将成为{}(而不是用作实际的占位符)。

所以在解决了这两个问题之后:

>>> 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中的更多内容,特别是基本格式部分了解有关位置占位符的信息,以及命名占位符部分用于 - 命名良好的占位符。


推荐阅读