Python Tech 文字列

Python 文字列の結合, 連結の方法一覧

文字列をつなぎ合わせる操作(結合)や、複数の文字列を一度に連結する方法についての解説しています。例えば、以下のような操作が含まれます。

  • 文字列同士の結合
  • 文字列の繰り返し
  • 文字列と数値(int, floatなど)の結合
  • 文字列の中に他の変数を展開
  • 文字列のリストを連結

これらをPythonで実装する方法を、現役のエンジニアが解説しています。

なお、反対に文字列を分割してリストを作成する方法は以下のページでまとめています。

 

結論

文字列同士を結合(+演算子)

s = 'foo' + 'bar'
print(s)
# foobar

 

文字列の単純な繰り返し(*演算子)

s = 'hoge'
t = s * 3
print(t)
# hogehogehoge

 

文字列と他の型(int,float,..)を結合(str()で型変換)

s = 'foo'
t = s + str(10)
print(t)
# foo10

 

文字列の中に他の変数を展開する (f-string)

val = 11.111
print(f"Price: {val}")
# Price: 11.111

 

文字列のリストを連結する (join()

l_str = ['foo', 'bar', 'buz']
print(','.join(l_str))
# foo,bar,buz

 

実行環境

Python 3.9.2

 

文字列同士を結合 +演算子

文字列リテラルを結合するには +演算子を用います。

s = 'foo' + 'bar'
print(s)
# foobar

 

文字列 str 型の変数も + で結合できます。

s1 = 'foo'
s2 = 'bar'
s3 = 'baz'

s = s1 + s2 + s3
print(s)
# foobarbaz

 

もちろん文字列変数と文字列リテラルでも結合可能です。

s = s1 + 'qux'
print(s)
# fooqux

 

ある文字列の末尾に、他の文字列を追加(結合)するだけなら、+=演算子の方が短く書けます。

s = 'foo'
s += 'bar'
# s = s + 'bar' と同じ
print(s)
# foobar

 

文字列の単純な繰り返し *演算子

*演算子は、算術演算子として使うなら乗算(かけ算)になりますが、文字列に対しては反復繰り返しを生成します。

[文字列] * [繰り返し回数] の形で記述します。

s = 'hoge'
t = s * 3
print(t)
# hogehogehoge

 

乗算の演算子 s * nは、文字列sをn回足す (+) ことと同じことです。

 

文字列と他の型(int,float,..)を結合

文字列と、文字列str以外の型(int, float,など)を+などで結合しようとするとエラーとなります。

s = 'foo'
t = s + 10
# TypeError: can only concatenate str (not "int") to str

 

数値型を文字列と結合するには、一度文字列str型に変換(キャスト)します。

変換にはstr()を用います。

s = 'foo'
t = s + str(10)
print(t)
# foo10

t = s + str(1.23)
print(t)
# foo1.23

 

文字列の中に他の変数を展開する f-string

文字列と数値型の結合をさらに柔軟に行うには、文字列中に他の変数を展開するように考えるとよいでしょう。

文字列の中に数値型などの変数を展開するにはフォーマット済み文字列リテラル(f-string、f文字列と呼ばれます)を利用します。

f-stringにするには、文字列リテラルの ""'' の直前にf を追加するだけです。文字列の中で変数を展開する位置には {変数名}のように書きます。

val = 11.111
print(f"Price: {val}")
# Price: 11.111

 

書式指定を書くことで、桁数やゼロ埋めの調整、符号の表示などが表現できます。

print(f"Price: {val:.1f}")
# Price: 11.1

 

詳しくはドキュメント参照。

書式指定ミニ言語仕様 — Python 3.9.4 ドキュメント

 

なお、f-stringはPython 3.6以降に実装された機能。3.5以前はformat()などで同様の表現が実現できます。

print("Price: {}".format(val))
# Price: 11.111

 

文字列のリストを連結する str.join()

文字列のリスト(list)は組み込み関数 str.join() を使えばひとつの文字列に連結することができます。

連結した文字列 = sep.join(iter)

sep連結に用いる文字列(セパレーター)
iterリストなどのイテラブルなオブジェクト

 

セパレーターとして,を用いて文字列を連結するには次のようにします。

l_str = ['foo', 'bar', 'buz']

print(','.join(l_str))
# foo,bar,buz

 

セパレーターに '' (空文字列)を使えば、要素同士を単に+で連結するのと同じになります。

print(''.join(l_str))
# foobarbuz

 

セパレーターに改行文字を用いると各行に1要素ずつ配置できます。

print('\r\n'.join(l_str))
# foo
# bar
# buz

 

join()に渡すオブジェクトはリスト以外でもイテラブルなら問題ありません。例えばタプルでもOKです。

l_str = ('foo', 'bar', 'buz')
print(','.join(l_str))
# foo,bar,buz

 

なお、文字列 str 型以外の値が含まれる場合は、エラーになります。

l = ['foo', 123, 'bar', 1.234]

','.join(l)
# TypeError: sequence item 1: expected str instance, int found

 

この場合は、各要素を文字列型に変換してからjoin()します。リスト内包表記などを活用します。

l = [str(elem) for elem in l]
print(','.join(l))
# foo,123,bar,1.234

 

反対に、文字列を区切り文字(セパレータ)で分割しリストにする方法は以下のページで解説しています。

 

Pythonの学習法について

Python の勉強が辛くなっていませんか?

Pythonは比較的取り組みやすい言語と言われていますが、プログラミング初心者にとっては分からないことだらけ。

ゼロから独学で勉強するのは厳しい道のりです。

今回、様々な現場、システム、言語を経験してきた現役エンジニアの立場から、初心者でも挫折しない学習方法を解説する記事を書きました。もちろん、お金をかけずに習得できる方法も解説しています。

できるだけストレスがかからない勉強法を解説しているので、ぜひ参考にしてみてくださいね。

 

今回参考にしたページ・資料

str.join 組み込み型 — Python 3.9.4 ドキュメント

7.1.1. フォーマット済み文字列リテラル 7. 入力と出力 — Python 3.9.4 ドキュメント

str.format 組み込み型 — Python 3.9.4 ドキュメント

 

  • この記事を書いた人

次世代ペンギン

長いのでペンギンとお呼びください。システム開発・プログラミングのお仕事をしています。甘味とコーヒーは生命線。多くの人に役立つ情報のシェアが目標です。

人気の記事

1

会社員でプログラマーとして働いている人、インフラやネットワークのエンジニアとして働いている人の中には、フリーランスのプログラマーとして独立、もしくは転向したい人もいるので ...

2

キャリアアップのため、または高収入を目指して、しっかりプログラミングを学びたいという人が増えてきましたね。 この記事では現役のエンジニアである私が、実際に仕事で稼げるよう ...

3

フリーランスのプログラマーにとって収入の向上に最も直結するのはスキルです。 必要なスキル、スキルの獲得方法が気になる人も多いでしょう。 また、これからフリーランスを目指す ...

4

Vuetifyの v-progress-circular コンポーネントは、数値データや処理状況を環状(円状)のデザインで教えてくれるUIデザインです。 ローディングのス ...

5

Vuexのstore(ストア)を使うと、各コンポーネント間で個別にデータのやり取りすることなく、データを一元的に管理できます。Vueでは欠かせない機能といえるでしょう。 ...

-Python, Tech, 文字列
-,