Python 中的右對齊字串

Aditya Raj 2023年10月10日
  1. 在 Python 中使用格式說明符來右對齊字串
  2. 在 Python 中使用 f-strings 右對齊字串
  3. 使用 format() 方法在 Python 中右對齊字串
  4. 使用 rjust() 方法在 Python 中右對齊字串
  5. まとめ
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 字串後,輸出被分配給變數 myStr1myStr2myStr3。為了使上述程式碼中的輸出字串右對齊,我們在佔位符中使用輸出字串的長度,如下例所示。

示例程式碼:

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() 方法後,輸出將分配給變數 myStr1myStr2myStr3

讓我們舉個例子,你可以有任意數量的佔位符,變數數量與 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() 方法的方法,因為它更方便。

此外,在這種情況下,如果輸入變數包含其他資料型別的值,程式也不會出錯。

作者: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

相關文章 - Python String