Python 中的右对齐字符串

有时,在 python 中打印表格时,我们需要证明值看起来不错。在本文中,我们将讨论在 python 中右对齐字符串的不同方法。

[在 Python 中使用格式说明符来右对齐字符串]

顾名思义,格式说明符用于格式化字符串中的值。以下是在 python 中使用格式说明符的语法。

myStr= "%s"% (string_variable)
  • string_variable 是需要打印为字符串的变量名称。
  • %s 用作字符串变量的格式说明符和占位符。对于整数和浮点数,你可以使用 %d 和 %f 作为格式说明符。

执行上述语句时,string_variable 中的值将分配到字符串中格式说明符的位置。最后,将输出字符串分配给 myStr

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr = "%s %s %s" % (string_variable1, string_variable2, string_variable3)
print(myStr)

输出:

Delftstack Aditya Jinku

在上面的示例中,我们定义了三个字符串变量。之后,我们使用格式说明符将输入转换为单个字符串。

在下一个示例中,假设变量的数量少于字符串中格式说明符的数量。在这种情况下,程序将遇到 TypeError 异常,表示没有足够的参数提供给格式字符串。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr = "%s %s %s" % (string_variable1, string_variable2)
print(myStr)

输出:

Traceback (most recent call last):
  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 4, in <module>
    myStr = "%s %s %s" % (string_variable1, string_variable2)
TypeError: not enough arguments for format string

上面的代码中有三个格式说明符。但是,我们只给出了两个字符串变量作为% 运算符的输入参数。

因此,程序会遇到 TypeError 异常。同样,当格式字符串中的变量多于格式说明符的数量时,程序会遇到 TypeError 异常,表示格式字符串的所有参数在字符串格式化期间尚未转换。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr = "%s %s" % (string_variable1, string_variable2, string_variable3)
print(myStr)

输出:

Traceback (most recent call last):
  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 4, in <module>
    myStr = "%s %s" % (string_variable1, string_variable2, string_variable3)
TypeError: not all arguments converted during string formatting

在上面的例子中,只有两个格式说明符,但我们给了三个字符串变量作为%运算符的输入参数。因此,程序在执行时会遇到 TypeError 异常。

为了使输出字符串右对齐,我们使用输出字符串的长度和格式说明符,如以下代码段所示。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = "%10s" % (string_variable1)
myStr2 = "%10s" % (string_variable2)
myStr3 = "%10s" % (string_variable3)
print(myStr1)
print(myStr2)
print(myStr3)

我们在上面的例子中指定了输出字符串长度为 10。执行后,输出字符串的长度为 10

输出:

Delftstack
    Aditya
     Jinku

在输出中观察字符串是右对齐的。如果 string_variable 的长度小于格式说明符中指定的输出字符串的长度,则将空格字符填充到字符串以右对齐输入字符串。

如果 string_variable 的长度大于格式说明符中指定的输出字符串的长度,则输入字符串不会发生任何变化,并且会原样打印。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = "%5s" % (string_variable1)
myStr2 = "%5s" % (string_variable2)
myStr3 = "%5s" % (string_variable3)
print(myStr1)
print(myStr2)
print(myStr3)

输出:

Delftstack
Aditya
Jinku

我们将输出字符串长度指定为 5。但是,我们作为输入传递的所有字符串的长度都大于或等于 5

因此,输出字符串的指定长度小于或等于输入字符串的长度。因此,不会发生格式化。

[在 Python 中使用 f-strings 右对齐字符串]

使用格式说明符需要我们知道变量的数据类型才能打印它们。如果我们没有传递格式说明符中指定的正确数据类型的变量,程序会遇到 TypeError 异常。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = "%d" % (string_variable1)
myStr2 = "%5s" % (string_variable2)
myStr3 = "%5s" % (string_variable3)
print(myStr1)
print(myStr2)
print(myStr3)

输出:

Traceback (most recent call last):
  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 4, in <module>
    myStr1 = "%d" % (string_variable1)
TypeError: %d format: a number is required, not str

你可以看到我们使用%d 作为格式说明符。但是,我们已将字符串作为输入传递给 % 运算符。

由于这个原因,程序遇到了一个 TypeError 异常,说它需要一个整数输入而不是一个字符串。为了避免这个错误,我们可以使用 f-strings 来右对齐字符串。

使用 f-strings 的语法:

myStr=f"{string_variable}"
  • string_variable 是必须打印其值的变量。
  • {} 用作 string_variable 的占位符。
  • 字符串前的文字f表明该字符串是一个 f 字符串。

执行后,输出字符串被分配给 myStr

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = f"{string_variable1}"
myStr2 = f"{string_variable2}"
myStr3 = f"{string_variable3}"
print(myStr1)
print(myStr2)
print(myStr3)

输出:

Delftstack
Aditya
Jinku

我们在上面的示例中创建了三个变量。之后,我们为每个变量创建了三个 f-strings

在执行 f 字符串后,输出被分配给变量 myStr1myStr2 和 myStr3。为了使上述代码中的输出字符串右对齐,我们在占位符中使用输出字符串的长度,如下例所示。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = f"{string_variable1:>10}"
myStr2 = f"{string_variable2:>10}"
myStr3 = f"{string_variable3:>10}"
print(myStr1)
print(myStr2)
print(myStr3)

输出:

Delftstack
    Aditya
     Jinku

我们在占位符中使用了语法 variable_name:> output_length 来右对齐输出中的字符串。我们已将 output_length 指定为 10

如果 string_variable 的长度小于在占位符中指定的输出字符串的长度,则将空格字符填充到字符串以右对齐输入字符串。就像在下面的代码片段中一样,如果 string_variable 的长度大于在占位符中指定的输出字符串的长度,则输入字符串不会发生任何变化,并且会保持不变。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = f"{string_variable1:>5}"
myStr2 = f"{string_variable2:>5}"
myStr3 = f"{string_variable3:>5}"
print(myStr1)
print(myStr2)
print(myStr3)

输出:

Delftstack
Aditya
Jinku

我们将输出字符串的长度指定为 5,小于或等于所有输入字符串的长度。因此,不会发生格式化。

[使用 format() 方法在 Python 中右对齐字符串]

除了 f-strings,我们还可以使用 format() 方法在 python 中右对齐字符串。

使用 format() 方法的语法:

myStr="{}".format(string_variable)
  • string_variable 是需要打印为字符串的变量的名称。
  • {} 用作字符串变量的占位符。

当执行 format() 方法时,string_variable 中的值被分配到字符串中占位符的位置。最后,将输出字符串分配给 myStr

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = "{}".format(string_variable1)
myStr2 = "{}".format(string_variable2)
myStr3 = "{}".format(string_variable3)
print(myStr1)
print(myStr2)
print(myStr3)

输出:

Delftstack
Aditya
Jinku

在上面的示例中,我们创建了三个变量。之后,我们使用了三次 format() 方法,每个变量一次。

在执行 format() 方法后,输出将分配给变量 myStr1myStr2 和 myStr3

让我们举个例子,你可以有任意数量的占位符,变量数量与 format() 方法的输入参数相同。

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr = "{} {} {}".format(string_variable1,string_variable2,string_variable3)
print(myStr)

输出:

Delftstack Aditya Jinku

我们将所有三个变量作为输入参数传递给 format() 方法。输出作为单个字符串返回。

如果传递给 format() 方法的变量少于字符串中占位符的数量,程序将遇到 IndexError 异常,如下例所示。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr = "{} {} {}".format(string_variable1,string_variable2)
print(myStr)

输出:

Traceback (most recent call last):
  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 4, in <module>
    myStr = "{} {} {}".format(string_variable1,string_variable2)
IndexError: Replacement index 2 out of range for positional args tuple

看到有三个占位符,但我们只将两个字符串作为输入参数传递给 format() 方法。因此,程序会遇到 IndexError 异常。

当传递给 format() 方法的变量数量多于调用 format() 方法的字符串中的占位符时,等于占位符数量的变量将包含在字符串中。其余变量被丢弃。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr = "{} {}".format(string_variable1,string_variable2,string_variable3)
print(myStr)

输出:

Delftstack Aditya

你可以看到只有两个占位符,我们已经将三个字符串作为输入传递给 format() 方法,但这次程序没有遇到 IndexError。只有最后一个输入参数已被丢弃。

为了使用 format() 方法右对齐输出字符串,我们在占位符中使用输出字符串的长度,如下例所示。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = "{:>10}".format(string_variable1)
myStr2 = "{:>10}".format(string_variable2)
myStr3 = "{:>10}".format(string_variable3)
print(myStr1)
print(myStr2)
print(myStr3)

输出:

Delftstack
    Aditya
     Jinku

在这里,如果 string_variable 的长度小于在占位符中指定的输出字符串的长度,则会在字符串中填充空格字符以右对齐输入字符串。

如果 string_variable 的长度大于在占位符中指定的输出字符串的长度,则输入字符串不会发生任何变化,并且会按原样打印。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = "{:>5}".format(string_variable1)
myStr2 = "{:>5}".format(string_variable2)
myStr3 = "{:>5}".format(string_variable3)
print(myStr1)
print(myStr2)
print(myStr3)

输出:

Delftstack
Aditya
Jinku

上面讨论的所有方法都用于格式化每种数据类型的变量。Python 还为我们提供了特定于字符串的方法。

我们可以使用 rjust() 方法在 python 中右对齐字符串。

[使用 rjust() 方法在 Python 中右对齐字符串]

rjust() 方法的语法:

myStr= string_variable.rjust(output_length)
  • string_variable 是其值需要右对齐的变量。
  • ouput_length 是输出字符串的长度。

当在 string_variable 上调用 rjust() 方法时,它将 output_length 作为其输入参数并返回分配给 myStr 的右对齐字符串。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = string_variable1.rjust(10)
myStr2 = string_variable2.rjust(10)
myStr3 = string_variable3.rjust(10)
print(myStr1)
print(myStr2)
print(myStr3)

输出:

Delftstack
    Aditya
     Jinku

如果 string_variable 长度小于 output_length,则将空格字符填充到字符串以右对齐输入字符串。

在下一个示例中,如果 string_variable 的长度大于 output_length,则输入字符串不会发生任何变化,并且会原样打印。

示例代码:

string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr1 = string_variable1.rjust(5)
myStr2 = string_variable2.rjust(5)
myStr3 = string_variable3.rjust(5)
print(myStr1)
print(myStr2)
print(myStr3)

输出:

Delftstack
Aditya
Jinku

[结论]

在本文中,我们讨论了在 python 中右对齐字符串的四种方法。在所有这些中,我建议你使用使用 format() 方法的方法,因为它更方便。

此外,在这种情况下,如果输入变量包含其他数据类型的值,程序也不会出错。