Python str.format()同时具有对齐{:>;}和变量插值

Python str.format()同时具有对齐{:>;}和变量插值,python,formatting,interpolation,string-interpolation,Python,Formatting,Interpolation,String Interpolation,我仍在努力理解Python中字符串格式的新语法 "{fpath:>80}".format(fpath=path, flongest=longest) 上面的代码插入path参数,并正确设置字符串的格式,但用变量替换文本窗口值(80)会导致错误 ValueError:格式说明符无效 "{fpath:>flongest}".format(fpath=path, flongest=longest) 如何通过变量指定窗口大小 "{fpath:>???}".format(fpath=

我仍在努力理解Python中字符串格式的新语法

"{fpath:>80}".format(fpath=path, flongest=longest)
上面的代码插入path参数,并正确设置字符串的格式,但用变量替换文本窗口值(80)会导致错误 ValueError:格式说明符无效

"{fpath:>flongest}".format(fpath=path, flongest=longest)
如何通过变量指定窗口大小

"{fpath:>???}".format(fpath=path, flongest=longest)

好了,终于明白了。变量“longest”可以是数字(“80”)或int(80)的字符串版本。诀窍是仅在右插值变量周围使用花括号

"{fpath:>{flong}}".format(fpath=path, flong=longest)
尝试使用以下方法:

longest='{0}.format(variable value)'#let say 80
print('{fpath:>{flong}}'.format(fpath=path,flong=longest))

变量长度还需要转换为格式说明符。我希望你能理解。如果仍然有任何问题,请告诉我。

Dup of如果有人知道一个很好的f字符串教程全面地涵盖了这个主题,或者至少有很多例子,请发布一个链接。这会有帮助的——谢谢!这是一个
.format
字符串,而不是f字符串,尽管语法几乎相同。使用Python3.6+f字符串,等价物是
f“{path:>{longest}”
。因此,没有方法调用,我们直接插入变量名,而不是使用关键字。快速的ipython会话显示,最长值可以是str或int,而无需转换为格式说明符。所以我认为这个答案的第一行是不必要的
print({fpath:>{flong}})。format(fpath=path,flong='40'))
print({fpath:>{flong})。format(fpath=path,flong=40))
都能正确生成格式化字符串。