Python で文字列を右寄せにする
- Python でフォーマット指定子を使用して文字列を右寄せする
-
Python で
f-strings
を使用して文字列を右寄せする -
Python で
format()
メソッドを使用して文字列を右揃えにする -
Python で
rjust()
メソッドを使用して文字列を右揃えにする - まとめ
時々、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
上記の例では、3つの文字列変数を定義しました。その後、フォーマット指定子を使用して入力を単一の文字列に変換しました。
この次の例では、文字列内のフォーマット指定子の数よりも変数が少ないと仮定します。その場合、プログラムは、フォーマット文字列に十分な引数が与えられていないことを示す 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
上記のコードには 3つのフォーマット指定子があります。ただし、%
演算子への入力引数として指定した文字列変数は 2つだけです。
このため、プログラムは 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
上記の例では、フォーマット指定子は 2つしかありませんが、%
演算子への入力引数として 3つの文字列変数を指定しています。このため、プログラムの実行中に 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
上記の例では、3つの変数を作成しました。その後、各変数に対応する 3つの f-strings
を作成しました。
f 文字列の実行後、出力は変数 myStr1
、myStr2
、および 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
に指定しました。これは、すべての入力文字列の長さ以下です。したがって、フォーマットは行われません。
Python で format()
メソッドを使用して文字列を右揃えにする
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
上記の例では、3つの変数を作成しました。その後、変数ごとに 1 回ずつ、format()
メソッドを 3 回使用しました。
出力は、format()
メソッドを実行した後、変数 myStr1
、myStr2
、および myStr3
に割り当てられます。
format()
メソッドへの入力引数と同じ数の変数を持つ任意の数のプレースホルダーを持つことができる例を見てみましょう。
string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr = "{} {} {}".format(string_variable1, string_variable2, string_variable3)
print(myStr)
出力:
Delftstack Aditya Jinku
3つの変数すべてを入力引数として 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
プレースホルダーが 3つあることを確認してください。ただし、format()
メソッドへの入力引数として渡した文字列は 2つだけです。このため、プログラムは IndexError
例外に遭遇します。
format()
メソッドに渡される変数の数が、format()
メソッドが呼び出される文字列のプレースホルダーよりも多い場合、プレースホルダーの数に等しい変数が文字列に含まれます。残りの変数は破棄されます。
サンプルコード:
string_variable1 = "Delftstack"
string_variable2 = "Aditya"
string_variable3 = "Jinku"
myStr = "{} {}".format(string_variable1, string_variable2, string_variable3)
print(myStr)
出力:
Delftstack Aditya
プレースホルダーは 2つしかなく、format()
メソッドへの入力として 3つの文字列を渡しましたが、プログラムは今回は 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 で文字列を右揃えにすることができます。
Python で rjust()
メソッドを使用して文字列を右揃えにする
rjust()
メソッドの構文:
myStr = string_variable.rjust(output_length)
string_variable
は、値を右寄せする必要がある変数です。ouput_length
は出力文字列の長さです。
rjust()
メソッドが string_variable
で呼び出されると、入力引数として 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 で文字列を右揃えにする 4つの方法について説明しました。これらすべての中で、より便利なため、format()
メソッドを使用するアプローチを使用することをお勧めします。
また、この場合、入力変数に他のデータ型の値が含まれていれば、プログラムでエラーが発生することはありません。
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