スライドショー

【Python入門】便利!joinの使い方まとめ

みなさんコードを書いていて、文字列であったり、数値であったり連結させたいな、という場面に出会ったことはありませんか?

文字列であれば+を使ったり、for文で回したりすることをまず考えると思います。ですが、Pythonには連結させるためのjoinという関数が用意されており、それを使えばfor文などを書かなくても連結可能です。なので今回は

  • そもそもjoinとは何か
  • joinで文字列を連結
  • joinで数値を連結
  • joinでpathを連結
  • 連結だけではなく分割するsplitの使い方

といったことを丁寧に解説するのでPythonで手軽に連結させたいという方は是非参考にしていただければ幸いです!

※ この記事のコードはPython 3.7, Ubuntu 18.04で動作確認しました。

joinとは?

joinとは英語で結合するという意味です。その意味通り、文字列や数値、pathなどを結合する時に使う関数です。

リストの中身だけをくっつけて、出力させたかったり、区切る文字を自由に決めたかったりするときに使えるのがこのjoin関数なのです。

joinの使い方

それではjoinの使い方を説明していきます。joinでは様々なものを連結させることができます。今回は、

  • 文字列
  • 数値
  • パス

について見ていきましょう。

joinで文字列を扱う

例えば以下のような文字列があったとしましょう。

test = ['ab','c','de']

例えばこのリストの中身を連結させて表示させようと思ったとき、

test = ['ab', 'c', 'de']
result = ' ' 
for x in test:
    result += x
    
print(result)

実行結果

abcde

このようなfor文を多くの人が考えるのではないでしょうか?

ですが、ただ連結させるだけで何行もコードを書くのはめんどくさいですよね。実はこのjoin関数を使えばたったの一行で連結させることが可能です。join関数は、".join(リスト名)で使うことができます。実際にコードを見てみましょう。

test = ['ab', 'c', 'de']
result = ''.join(test)
print(result)

実行結果をみてみると

abcde

はい、一発で結合できました。因みに’’の間に好きな文字を入れることでその文字を区切り文字にすることができます。例えば”,”を区切り文字に使いたかった場合

test = ['ab', 'c', 'de']
result = ','.join(test)
print(result)

としてやると、

ab,c,de

という風に区切り文字を自在に指定できます。

map関数で数値を扱う

文字列は連結できたけど、数値はどうでしょうか。実際にみてみましょう。

list = ['ab', 'c', 'de',4]
result = ''.join(list)
print(result)

リストに数値を混ぜてみると、

Traceback (most recent call last):
  File "sample.py", line 2, in <module>
    result = ''.join(list)
TypeError: sequence item 3: expected str instance, int found

という風にエラーが返ってきてしまいます。そのようなときは数値を一度文字列に変換してやる必要があります。変換すると言っても簡単でmap関数を使うことにより変換できます。

書き方はmap(使用する関数, リストの名前)としてやることで、指定されたリストに関数を充てることができます。コードを見てみると、

test = ['ab', 'c', 'de',4]
map_result = map(str, test)
result = ''.join(map_result)
print(result)

こうなり、文字列に変換するstr関数をlistに充てていますね。結果を見てみると

実行結果

abcde4

はい、きちんとjoinできています。

os.path.joinでpathを扱う

次はjoinを用いてpathを連結させる方法も紹介します。WindowsやMacなど使う実行環境によってPathの様々な問題が発生して困ったことはないでしょうか?

このos.path.joinを使えばそんなpathの問題は一発で解決してくれ、実行環境に合ったpathに連結してくれます。書き方は今まで通りなのですが、注意する点はos.を使うため、最初にosをimportしておくことと、引数は*に続けて与えることです。

実際にみてみましょう。

import os

test = ['/usr/', 'local/',"bin"]
a = os.path.join(*test)
 
print(a)

リストにpathを入れておき引数は*に続けて与えていますね。結果を見てみると、

実行結果

/usr/local/bin

うまく結合しています。では次は連結の仕方はわかったけど分割はできないの?連結に分割はつきものじゃないの?と思う方もいると思うので、今度は分割のさせかたについてみていきましょう。

splitで分割する

連結とは逆に分割するにはsplit関数を使います。split関数は文字列.split(“区切る文字”)という書き方で書きます。少しややこしいので実際に例を挙げてみましょう。

a = "ab,c,de"
sep = a.split(",")
print(sep)

このようなコードがあった場合引数には区切りたい場所の文字をいれます。この場合は、","を引数に与えているので","のポイントで区切ることになり結果は

['ab', 'c', 'de’]

こうなります。例えば

a = "abcdcba"

このようなコードをdを境に分割したいなと思ったら

a = "abcdcba"
sep = a.split("d")
print(sep)

引数には(“d”)を与え結果は、

実行結果

['abc', 'cba’]

こうなります。joinとは違いsplitは引数に区切り文字を与えるということですね。先程説明したmap関数などを使えば数値なども分割することができます。

詳しくspiltについても勉強したいという熱心な方は

はじめてのPython!文字列を分割するsplitメソッド使い方まとめ
更新日 : 2018年11月5日

こちらに大変詳しく解説されているので参考にしてみてください。

まとめ

いかがでしたでしょうか?Pythonによる要素の連結分割はマスターしていただけましたか?

連結するときは、’区切り文字’.join(リスト名)でリストの連結、数値が含まれている場合はmap(str関数, リスト名)で文字列に変換、pathを連結するときは、os.path.joinで引数は”*”に続けて書くんでしたね。

分割するときは、split関数を使い引数に区切り文字を与えるということも大事でしたね。連結したり分割したりは良くする作業なので是非マスターして効率的なスクリプトが書けるようになってください!それでは!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

かい

かい

日向徹かこよすぎか

[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説