Python文字列の連結

文字列の連結は、プログラミングで非常に一般的な操作です。Pythonの文字列の連結は、さまざまな方法で行うことができます。このチュートリアルでは、Pythonプログラムで文字列を連結するさまざまな方法を探求します。

Pythonの文字列の連結

以下の方法を使用して文字列の連結を行うことができます:

  • +演算子の使用
  • join()メソッドの使用
  • %演算子の使用
  • format()関数の使用
  • f-string(リテラル文字列の内挿)の使用

+演算子を使用した文字列の連結

これは、文字列の連結の最もシンプルな方法です。簡単な例を見てみましょう。

s1 = 'Apple'
s2 = 'Pie'
s3 = 'Sauce'

s4 = s1 + s2 + s3

print(s4)

出力: ApplePieSauce 他の例を見てみましょう。ここでは、ユーザーの入力から2つの文字列を取得し、それらを連結します。

s1 = input('Please enter the first string:\n')
s2 = input('Please enter the second string:\n')

print('Concatenated String =', s1 + s2)

出力:

Please enter the first string:
Hello
Please enter the second string:
World
Concatenated String = HelloWorld

文字列の連結には+演算子を使用するのが非常に簡単です。ただし、引数は文字列でなければなりません。

>>>'Hello' + 4
Traceback (most recent call last):
  File "<input>", line 1, in 
TypeError: can only concatenate str (not "int") to str

オブジェクトの文字列表現を取得するために、str()関数を使用することができます。文字列を整数または他のオブジェクトに連結する方法を見てみましょう。

print('Hello' + str(4))


class Data:
    id = 0

    def __init__(self, i):
        self.id = i

    def __str__(self):
        return 'Data[' + str(self.id) + ']'


print('Hello ' + str(Data(10)))

出力:

Hello4
Hello Data[10]

「+」演算子の最大の問題は、文字列の間にセパレータやデリミタを追加できないことです。例えば、「Hello」と「World」を空白のセパレータで連結する場合、"Hello" + " " + "World"と書かなければなりません。

join()関数を使用した文字列の連結

文字列をセパレータで連結するために、join()関数を使用することができます。これは、文字列のシーケンス(例:リストタプル)がある場合に便利です。セパレータを使用したくない場合は、join()関数を空の文字列とともに使用してください。

s1 = 'Hello'
s2 = 'World'

print('Concatenated String using join() =', "".join([s1, s2]))

print('Concatenated String using join() and whitespaces =', " ".join([s1, s2]))

出力:

Concatenated String using join() = HelloWorld
Concatenated String using join() and spaces = Hello World

%演算子を使用した文字列の連結

文字列のフォーマットには%演算子を使用することができます。これは文字列の連結にも使用できます。文字列を連結し、単純なフォーマットを行いたい場合に便利です。

s1 = 'Hello'
s2 = 'World'

s3 = "%s %s" % (s1, s2)
print('String Concatenation using % Operator =', s3)

s3 = "%s %s from JournalDev - %d" % (s1, s2, 2018)
print('String Concatenation using % Operator with Formatting =', s3)

出力:

String Concatenation using % Operator = Hello World
String Concatenation using % Operator with Formatting = Hello World from JournalDev - 2018

format()関数を使用した文字列の連結

文字列の連結とフォーマットにはformat()関数を使用することもできます。

s1 = 'Hello'
s2 = 'World'

s3 = "{}-{}".format(s1, s2)
print('String Concatenation using format() =', s3)

s3 = "{in1} {in2}".format(in1=s1, in2=s2)
print('String Concatenation using format() =', s3)

出力:

String Concatenation using format() = Hello-World
String Concatenation using format() = Hello World

Pythonのformat()関数は非常に強力であり、文字列の連結に使用するだけでは適切な使い方ではありません。

f-stringを使用した文字列の連結

Python 3.6以降を使用している場合、f-stringを文字列の連結にも使用することができます。これは新しい文字列のフォーマット方法であり、PEP 498 – Literal String Interpolationで導入されました。

s1 = 'Hello'
s2 = 'World'

s3 = f'{s1} {s2}'
print('String Concatenation using f-string =', s3)

name = 'Pankaj'
age = 34
d = Data(10)

print(f'{name} age is {age} and d={d}')

出力:

String Concatenation using f-string = Hello World
Pankaj age is 34 and d=Data[10]

f-stringはformat()関数と比較して記述が簡潔で書きやすくなっています。また、オブジェクト引数がフィールドの置換として使用される場合にはstr()関数も呼び出されます。

結論

Pythonの文字列フォーマットはいくつかの方法で行うことができます。必要に応じて使用してください。もし区切り文字で文字列のシーケンスを連結する必要がある場合は、join()関数を使用します。連結と共にフォーマットも必要な場合は、format()関数またはf-stringを使用します。なお、f-stringはPython 3.6以上のバージョンで使用することができます。

完全なPythonスクリプトや他のPythonの例は、GitHubリポジトリからご覧いただけます。

Source:
https://www.digitalocean.com/community/tutorials/python-string-concatenation