Ciao!みなさんこんにちは!このブログでは主に
(1)pythonデータ解析,
(2)DTM音楽作成,
(3)お料理,
(4)博士転職
の4つのトピックについて発信しています。
今回は「アラサーOLのためのpython入門講座」です!この講座では、プログラミング初心者アラサーOLのMi坊さんに、pythonを学習する上でのアドバイスを行います!「パソコンもプログラミングも初心者だけど、プログラミングができるようになりたい!」という方のためにstep-by-stepで解説していきます。
今日は文字列の結合について解説します!Pythonの文字列(str型変数)は”+”(プラス)演算子で結合することができます。通常はstr型変数同士を結合しますが、適切に型変換することでint型やfloat型の変数と文字列を結合することもできます。文字列操作は入出力ファイル名の決定や途中経過の出力などに必要です。文字列の結合は文字列操作の基礎なので習得しておきましょう!
ぜひ最後までお付き合いください!
この記事はこんな人におすすめ
- 初心者だけどpythonを始めた!
- pythonの基本的な使い方を知りたい!
- 独学で学んだpythonの知識を整理したい!
Abstract | +演算子と型変換で文字列を連結する
Pythonでは+(プラス)演算子を文字列やstr型変数に適用すると、文字列やstr型変数の連結ができます。ベタ打ちの文字列同士、str型変数同士、文字列とstr型変数といった組み合わせでも連結できますし、int型やfloat型の変数もstr型に変換することで文字列として扱って結合することができます。実際にプログラミングする場面で+演算子を使って文字列の結合を行う機会はあまりないですが、習得しておくと文字列操作の基礎を押さえることができます。
文字列操作自体は途中経過の表示や入出力ファイル名の定義などで必要です。まずは文字列操作の基礎を習得していきましょう!
Background | 文字列の連結の使い所
Pythonプログラミングにおいて、文字列の連結などの文字列操作は入出力のファイルなどのファイル名を決めるところでよく使われます。簡単なプログラミングを組む分にはファイル名をベタ打ちにすることもありますが、変数を使って状況に応じてファイル名を定義したい場合には文字列の連結といった操作が必要です。その他の用途としては、途中過程や結果の出力です。こちらはこの記事でもいつもやっているように、print()文と一緒に使って逐次結果を出力するときに使います。
Pythonで文字列の連結を行う方法には主に
- +演算子で繋ぐ
- フォーマット指定子を使う
の2通りがあります。
私自身は後者を使うことがほとんどで、+演算子で連結することはほぼやりません。ファイル名を決めたりするのにはフォーマット指定(全体の桁数や小数点以下の桁数など)をした方が統一感を持たせることができるためです。ただ前者の方法も知っていて損はありません。今回は+演算子で連結する方法を解説します。
Method | +演算子と型変換で文字列を連結する方法
+(プラス)演算子をstr型の変数やベタ打ちの文字列に適用すると、文字列を連結することができます。+演算子をベタ打ちの数値やint型やfloat型などの数値を格納する変数に適用すれば足し算ができることは以前からご紹介していましたが、str型や文字列にも使うことができるのです。
文字列を連結するという機能の+演算子は(ベタ打ちの)文字列やstr型変数同士、あるいは文字列とstr型変数の組み合わせに対して使うことができます。逆に言えば、str型以外の変数、例えばint型やfloat型とは連結することができません。この場合にはint型やfloat型の変数をstr型に変換する必要があります。
以下では具体例を使ってこれら2点について詳しく見ていきましょう。
ベタ打ちの文字列同士の連結
まずはベタ打ちの文字列同士の連結です。実際に使う場面はほぼ無いですが以下のようにやります。
# connect and print strings
print("my hobby is " + "python") # my hobby is python
連結結果をstr型変数に格納することもできます。
# or define a str variable by connecting strings
my_description = "my hobby is " + "programming"
# and print it
print(my_description) # my hobby is programming
str型変数同士の連結
次にstr型変数同士の連結をしてみましょう。以下のようにやります。
# define 2 str variables
hobby_header = "my hobby is "
my_hobby = "python"
# concatinate and print them
print(hobby_header + my_hobby) # my hobby is python
実際にありえる場面として、ファイル名を想定してみましょう。次のResultセクションでは実際にpython notebookで演習をしますが、このpython notebookのファイル名「practice_str_concatenation.ipynb」を文字列の連結で作ってみます。このファイル名は
- “practice” + “_” + “str_concatenation” + “.” + “ipynb”
のように
- ヘッダー + アンダースコア + 内容 + ドット + 拡張子
という構造となっています。この構造に従って以下のようにファイル名を定義しましょう。
# file header
file_header = "practice"
# file extension
file_extension = "ipynb"
# file content
file_content = "str_concatenation"
# file name
file_name = file_header + "_" + file_content + "." + file_extension
# print filename
print(file_name) # practice_str_concatenation.ipynb
もちろんアンダースコアやドットも変数にしても構いませんが複雑になりすぎるのでベタ打ちにしました。
ベタ打ちの文字列とstr型変数の連結
ベタ打ちの文字列とstr型変数の連結も同様に行うことができます。というより、上のファイル名定義の例ではベタ打ちのアンダースコアやドットとstr型変数を結合しているのですでに出てきていますね。一応まとめておきましょう。以下のように結合します。
# define my hobby as a variable
my_hobby = "python"
# print
print("my hobby is "+ my_hobby) # my hobby is python
ただ、このように途中経過を表示するだけであればわざわざ結合せずともprint()にカンマで並べて渡せばOKです。
# define my hobby as a variable
my_hobby = "python"
# print
print("my hobby is", my_hobby) # one space is automatically added
“my hobby is”と”python”の間には、print()のデフォルト設定では自動的にスペースが入ります。
int型変数との連結
int型変数を文字列として連結するには、str()でstr型に変換する必要があります。使い所としてはやはりファイル名の定義で、例えばファイル名に番号を入れたい場合などです(ループして複数ファイル作る場合など)。以下のようにstr()で変換して連結します。
# file's basename
file_bname = "my_file"
# file's number
file_number = 1
# define the file name
file_name = file_bname + "_" + str(file_number) + ".csv"
# print
print(file_name) # my_file_1.csv
ただ、ファイル名に番号を入れる場合には桁数を指定したり、先頭をゼロ埋めしたりするので文字列の連結ではなくフォーマット指定子で定義する方が便利です。こちらは次回以降紹介します。
float型変数との連結
float型変数との連結にもstr()による変換が必要です。ただ、float型を文字列に変換するときはほぼ必ずフォーマット指定をするため、+演算子で連結することはあまりありません。ここでは一応扱っておきます。
# define a float variable
var_float = 3.141592
# print
print("Circular ratio is " + str(var_float)) # Circular ratio is 3.141592
派生編 | 文字列に「*」演算子を使うと繰り返しになる
文字列に対しては「*」演算子(掛け算)を使うことができます。この場合は「指定回数だけ同じ文字列を繰り返す」という意味になります。以下のようにすると「pythonpythonpython」と「python」が3回繰り返された文字列が出力されます。
# define a str variable
my_hobby = "python"
# print 3 pythons
print(my_hobby*3) #pythonpythonpython
Result | 実際にやってみよう
実際に手を動かしてみましょう!
今回もJupyter Notebookでコーディングしましょう!
もしコーディングの方法がわからなければ練習問題の後に例を示すので、そちらを参照してください。
準備 | python notebookの新規作成
まずはpython notebookを用意しましょう。
いつものpython_practiceのディレクトリに「practice_str_concatenation」という名前のpython notebookを作成してください。
ターミナルを立ち上げて~/python_practiceに移動、jupyter notebookを起動し、ブラウザから新規→Python3でpython notebookを開いて、ファイル→リネームでファイル名を決定します。
もしやり方がわからなければ、前回記事「python入門講座 | 変数を使いこなそう1(変数の定義方法と基本ルール)」や過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」で詳しく解説しているので、これらを見ながらやってみてください。
文字列同士の連結
まずはベタ打ちの文字列同士の連結をやってみましょう。いつものように適宜Markdownセルに説明を書きながら進めましょう。Markdownセルやコードセルなどの用語やこれらの使い方は過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」を参照してください。
以下を実行してみましょう。
# concatenate and print strings
print("my hobby is " + "python") # my hobby is python
2つの文字列が結合されてprint()で出力され、「my hobby is python」という文字列が出力されます。
結合した文字列をstr型変数に格納してから表示してみましょう。以下を実行してみてください。
# or define a str variable by concatenating 2 strings
my_description = "my hobby is " + "programming"
# and print it
print(my_description) # my hobby is programming
変数my_descriptionには「my hobby is programming」という文字列が格納されており、これが表示されます。
str型変数同士の連結
次にstr型変数同士を連結してみましょう。以下を実行してみましょう。
# define 2 str variables
hobby_header = "my hobby is "
my_hobby = "python"
# concatenate and print them
print(hobby_header + my_hobby) # my hobby is python
2つのstr型変数が結合されてprint()で出力されます。「my hobby is python」と表示されます。
実戦的な場面も想定してstr型変数の結合をやってみましょう。このpython notebookのファイル名をstr型変数の結合で定義してみましょう。以下を実行してみましょう。
# file header
file_header = "practice"
# file extension
file_extension = "ipynb"
# file content
file_content = "str_concatenation"
# file name
file_name = file_header + "_" + file_content + "." + file_extension
# print filename
print(file_name) # practice_str_concatenation.ipynb
このpython notebookのファイル名は「practice」というヘッダ部分、「ipynb」という拡張子、ファイルの内容を表す「str_concatenation」という3つの文字列から成り立っているので、それぞれをstr型変数に格納しておきます。これら3つとアンダースコア、ドットを結合することでファイル名を表す文字列を定義しました。「practice_str_concatenation.ipynb」と表示されます。
文字列とstr型変数の結合
上のファイル名を定義する例でやってしまいましたが、ベタ打ちの文字列とstr型変数の結合もやっておきましょう。以下を実行してみてください。
# define my hobby as a variable
my_hobby = "python"
# print
print("my hobby is "+ my_hobby) # my hobby is python
「my hobby is python」と表示されます。
このようにprint()で表示するだけなら+演算子で結合する必要はありません。カンマで複数の変数をprint()関数の引数として渡せばOKです。以下を実行しましょう。
# define my hobby as a variable
my_hobby = "python"
# print
print("my hobby is", my_hobby) # one space is automatically added
これでも「my hobby is python」と表示されます。print()関数に複数引数として渡す場合、デフォルトでは引数同士の間にはスペースが入ります。そのためこの例では”my hobby is “ではなく”my hobby is”として最後にスペースを入れていません。
int型変数との連結
int型変数を文字列として連結してみましょう。str()でstr型に変換します。以下を実行してみましょう。
# file's basename
file_bname = "my_file"
# file's number
file_number = 1
# define the file name
file_name = file_bname + "_" + str(file_number) + ".csv"
# print
print(file_name) # my_file_1.csv
「my_file_1.csv」と出力されます。int型変数のfile_numberをstr(file_number)でstr型に変換して結合しています。
float型変数との連結
float型変数を文字列として連結するのもやってみましょう。以下を実行してみましょう。
# define a float variable
var_float = 3.141592
# print
print("Circular ratio is " + str(var_float)) # Circular ratio is 3.141592
「Circular ratio is 3.141592」と表示されます。前述のようにfloat型変数を文字列に変換する場合はフォーマット指定を行うのでstr()で変換する機会はほとんどありません。
文字列に対する繰り返し演算子(*)
*演算子を使った文字列の繰り返しもやってみましょう。以下を実行してみましょう。
# define a str variable
my_hobby = "python"
# print 3 pythons
print(my_hobby*3) #pythonpythonpython
今回は「*3」としたので変数my_hobbyの中身「python」が3回繰り返されます。実際のコーディングで使ったことはないです笑
練習問題
最後に練習問題をやってみましょう!以下の処理をするコードを書いてみてください。
- 変数piに3.14を代入してください
- 変数rに2を代入してください
- 変数circumに2 * pi * rの結果を代入してください
- 文字列circumferenceなどと変数pi, r, circumを結合し, 「circumference_<rの値>_<piの値>_<circumの値>」となるように変数circum_resultを定義してください
- 変数circum_resultの内容を出力してください
練習問題の回答例
できたら回答例を確認しましょう!下の画面をスクロールすると回答例が見られます!
今回の記事で出てきた他のコードも載っているので参考にしてください!
練習問題おつかれさまでした!
今日はここまでです。Python Notebookを終了しておきましょう。もしPython Notebookを終了方法がわからなければ過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」の「Python Notebookの起動・終了方法」の章を参照してください!
Conclusion | まとめ
最後までご覧いただきありがとうございました!
Pythonの文字列の結合について解説しました!
データ処理やデータ分析では文字列の結合を行う場面は多くはないですが、途中結果の出力や入出力ファイル名の定義等で使うことがあります。実戦的な内容とは言えませんが、文字列の操作はPythonプログラミングの基礎として必要です!気長にPythonを習得していきましょう!
以上「python入門講座 | 文字列を連結してみよう(変数の型変換の応用)」でした!
またお会いしましょう!Ciao!
References | 参考
参考教科書
以下の教科書を参考にして進めています!より詳しく学びたい方は購入して読んでみてください!
- 現場で使える! Python深層学習入門 Pythonの基本から深層学習の実践手法まで (AI & TECHNOLOGY)
深層学習をpythonで学ぶための教科書ですが、最初の60ページぐらいがpythonの基礎的な解説に割かれています。簡潔にまとまっていてわかりやすいです。