Python 3 嵌套字符串格式
Python 3 Nesting String format
我正在尝试生成一个带有数字的简单三角形,输出可能如下所示:
1
22
333
但是,我不能让它与嵌套字符串格式一起使用,我能实现的最好结果如下...
for i in range(1, size+1):
line = f'{i}' *i
print(f"{line:>{size}}")
理想情况下,我希望 'line' 嵌套在 print 方法中。有什么建议吗?
您的 "nested" 格式字符串需要格式化两次。第二次要保留的任何花括号都需要在第一次进行转义,因此 {
变为 {{
,}
变为 }}
。此外,由于您不能使用 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 弦本身中,您可以通过以下方式实现:
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}}")
我正在尝试生成一个带有数字的简单三角形,输出可能如下所示:
1
22
333
但是,我不能让它与嵌套字符串格式一起使用,我能实现的最好结果如下...
for i in range(1, size+1):
line = f'{i}' *i
print(f"{line:>{size}}")
理想情况下,我希望 'line' 嵌套在 print 方法中。有什么建议吗?
您的 "nested" 格式字符串需要格式化两次。第二次要保留的任何花括号都需要在第一次进行转义,因此 {
变为 {{
,}
变为 }}
。此外,由于您不能使用 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 弦本身中,您可以通过以下方式实现:
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}}")