Python で文字列を右寄せにする

Aditya Raj 2023年10月10日
  1. Python でフォーマット指定子を使用して文字列を右寄せする
  2. Python で f-strings を使用して文字列を右寄せする
  3. Python で format() メソッドを使用して文字列を右揃えにする
  4. Python で rjust() メソッドを使用して文字列を右揃えにする
  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

上記の例では、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 文字列の実行後、出力は変数 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_length10 に指定しました。

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() メソッドを実行した後、変数 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

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
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