Nested Python3嵌套字符串格式

Nested Python3嵌套字符串格式,nested,string-formatting,python-3.6,Nested,String Formatting,Python 3.6,我正在尝试生成一个带有数字的简单三角形,其中输出可能如下所示: 1 22 333 然而,我不能用嵌套字符串格式来实现这一点,我能实现的最好的方法是 for i in range(1, size+1): line = f'{i}' *i print(f"{line:>{size}}") 理想情况下,我希望在print方法中嵌套“line”。有什么建议吗?您的“嵌套”格式字符串需要格式化两次。任何想要第二次保留的

我正在尝试生成一个带有数字的简单三角形,其中输出可能如下所示:

  1
 22
333
然而,我不能用嵌套字符串格式来实现这一点,我能实现的最好的方法是

        for i in range(1, size+1):    
            line = f'{i}' *i
            print(f"{line:>{size}}")
理想情况下,我希望在print方法中嵌套“line”。有什么建议吗?

您的“嵌套”格式字符串需要格式化两次。任何想要第二次保留的花括号都需要在第一次中转义,因此
{
变成
{{
}
变成
}
。此外,由于不能两次使用
f
前缀,因此可以显式调用
format
进行第二次格式化

您要找的是:

for i in range(1, size + 1):
    line = f"{i}" * i
    print(f"{{0:>{size}}}".format(line))
因此,第一个字符串格式将
f{{0:>{size}}}}}
转换为
{0:>3}
,因此当到达
format
的显式调用时,您基本上得到了
print({0:>3})。format(line))

您的“嵌套”格式字符串需要格式化两次。任何想要第二次保留的花括号都需要在第一次中转义,因此
{
变成
{{
}
变成
}
。此外,由于不能两次使用
f
前缀,因此可以显式调用
format
进行第二次格式化

您要找的是:

for i in range(1, size + 1):
    line = f"{i}" * i
    print(f"{{0:>{size}}}".format(line))

因此,第一个字符串格式将
f{{0:>{size}}}}}
转换为
{0:>3}
,因此当达到
format
的显式调用时,您基本上得到了
print({0:>3})。format(line))

实际上,如果您想要在f字符串本身中嵌入“line”创建,您可以通过以下方法实现:

for i in range(1, size+1):
    print(f"{str(i) * i:>{size}}")
或者,如果需要,也可以在其中使用旧的%运算符形成字符串

for i in range(1, size+1):
    print(f"{'%s' % (i) * i:>{size}}")

实际上,如果您希望将“行”创建嵌入到f字符串本身中,则可以通过以下方式实现:

for i in range(1, size+1):
    print(f"{str(i) * i:>{size}}")
或者,如果需要,也可以在其中使用旧的%运算符形成字符串

for i in range(1, size+1):
    print(f"{'%s' % (i) * i:>{size}}")

我不明白你在问什么。你说打印方法中嵌套的“行”是什么意思?我不明白你在问什么。您所说的打印方法中嵌套的“行”是什么意思?