如何使用变量而不是直接输入在 Python 中对齐文本?

问题描述

我正在尝试编写一个函数,它需要 6 个输入、一个名字和姓氏、两个对齐字符和两个对齐长度。该函数应该使用对齐变量来显示名称,如下所示:

|First name  | Last name|
|John        |     Smith|

我了解如何通过直接输入带有 f 字符串或字符串格式的所需值来进行文本对齐,例如

{first_name:<12} 

但是如何用变量替换 :

def display_name(first_name,last_name,align1,length1,align2,length2):

    if align1 == "L":
        align1 = "<"

    elif align1 == "R":
        align1 = ">"

    elif align1 == "C":
        align1 = "^"

    if align2 == "L":
        align2 = "<"

    elif align2 == "R":
        align2 = ">"

    elif align2 == "C":
        align2 = "^"

print(f"{|First name:{align1}.{length1}}|{Last name:{align2}.{length2}}|")
print(f"{|first_name:{align1}.{length1}}|{last_name:{align2}.{length2}}|")

解决方法

你很亲近。您不应在 f 字符串说明符中包含 |。只需交换您的 |{},您的代码就会运行而不会出错。

print(f"|{first_name:{align1}.{length1}}|{last_name:{align2}.{length2}}|")
,

我认为这里给出的答案令人满意: Format in python by variable length

为方便起见,这里有一个解决您问题核心的最小示例。我还没有想办法让它与 f 格式一起工作,但 ''.format() 语法在这里工作得很好。

stuff='bananas'
('{:<'+str(12)+'}').format(stuff)