Pythonで文字列の連結・変換・検索をするにはどうすればいいの?
プログラミングをする上で、文字列操作を行う機会はよくあります。たとえば、文字列の中に意図した文字列が入っているか検索したい、文字列を部分的に他の文字列に置き換えたいなど。
そこで、今回は、Pythonにおける文字列の基本的な使い方について、やさしく解説していきたいと思います。文字列の操作には色んな種類があり、それぞれどれも覚えておいて損はないものばかりです。
この記事では、文字列操作について以下の内容で解説していきます。
- 文字列とは
- 文字列の取得、連結、分割、変換、検索、桁揃え
- 文字列の比較方法
- 文字列に空白がある場合の対処法
- 文字列に日本語が含まれている場合の対処法
文字列操作は覚えてしまえば、それほど難しくありませんので、この機会にぜひ理解しておきましょう。
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
Pythonで文字列を宣言するには
そもそも文字列とはその名の通り「文字の列」で構成された基本的なデータ型の一つです。文字列はリスト型やタプル型等と同じようにシーケンス型にも属します。
また、文字列はイミュータブルな型でもあります。イミュータブルとは変更が出来ない型のことを言います。
文字列の一部を書き換えたり、消したりすることはできず、変更を加えたいのであれば新しいオブジェクトを作った上で変更を加えなければなりません。
Pythonで文字列を扱うには、ダブルクォート(“)かシングルクォート(‘)で囲む必要があります。
mystr1 = "Hello world" mystr2 = 'Hello world'
このように、mystr1とmystr2といった文字列型のオブジェクトを作ることができましたね。
Pythonで文字列を扱う12の方法
それでは早速、文字列の使い方を見ていきましょう。
文字列の取得
文字列の中から、特定の文字列を取得するときはスライス機能を使います。
以下のコードをご覧ください。
str = "abcdef" print(str[3:6])
実行結果:
def
こちらのコードでは、「abcdef」の文字列から「def」を取得しています。ste[3:6]のように、取得する位置を指定して文字列を取得しているのです。
わかりづらいので、図で見てみましょう。
文字の間に、数字を置いた位置を指定しています。そのためstr[3:6]の場合は、「3~6までの文字列」を指定することとなり、defの文字列が取得できているのです。
文字列の連結
二つの文字列を一つの文字列に組み合わせたい場合は、文字列の連結を行います。
「+」演算子を使用することで、二つの文字列の連結が簡単に行うことが出来ます。
以下のコードをご覧ください。
mystr1 = 'Hello' mystr2 = 'World' mystr3 = mystr1 + mystr2 print(mystr3)
実行結果
HelloWorld
こちらのコードでは、文字列Helloを格納するmystr1とworldを格納するmystr2を連結しました。
また、変数を文字列に埋め込んで連結することも出来ます。
mystr = 'Python' print("Hello"+mystr+"World")
実行結果
HelloPythonWorld
文字列を分割
文字列を分割するときは、splitメソッドを使います。
以下のコードをご覧ください。
strHello = 'Hello world!' res = strHello.split(' ') print(res)
実行結果:
['Hello', 'world!']
この例では、splitメソッドで半角空白を指定しています。そのため、分割前の文字列「Hello world!」が2つに分割され、結果が出力されています。
このように、指定した区切り文字で、文字列を分割できるのです。
splitメソッドの詳しい使い方は以下でも解説しているので、興味がある方は参考にしてみてください。
文字列の検索
ある文字列の中に特定の文字列が含まれているか調べたい場合は、findメソッドを使いましょう。
以下のコードをご覧ください。
mystr = 'Hello world' index = mystr.find('world') print(index)
実行結果
6
findメソッドは、引数に指定した文字列が最初に現れるインデックスを返します。また、その文字列が存在しなかった場合は、-1を返します。
こうして簡単に、文字列の検索とインデックスを調べる事が出来ました。インデックスを調べる必要が無い場合は、文字列の検索にin演算子を使用する事が出来ます。
以下のコードをご覧ください。
url = 'http://www.google.com/sample/top/' googleDomain = 'www.google.com' bingDomain = 'www.bing.com' print(googleDomain in url) print(bingDomain in url)
実行結果
True False
こちらのコードでは、URLの中に含まれるドメインの文字列をin演算子で調べてみました。実際、GoogleドメインはURLに含まれているので、Trueと表示されましたね。
空白を削除
文字列の中にある空白を削除するときは、replaceメソッドを使います。
以下のコードをご覧ください。
strBlank = ' abcdef' res = strBlank.replace(' ','') print(res)
実行結果:
abcdef
こちらのコードでは、変換前の文字列「 abcdef」の中にある半角空白を削除しています。
この例ではabcdefの前に半角空白がありますが、「 abcdef 」のように前後に半角空白があった場合も削除できます。
strBlank = ' abcdef ' res = strBlank.replace(' ','') print(res)
実行結果:
abcdef
文字列の置き換え
文章の中にある文字列を、指定した文字列に置換する事も出来ます。
置換するときは、replaceメソッドを使いましょう。
以下のコードをご覧ください。
mystr = 'Hello world' replaced = mystr.replace('world', 'everyone') print(replaced)
実行結果
Hello everyone
こちらのコードでは、文字列Hello worldのworldの部分をeveryoneに置き換えてみました。
replaceメソッドは、第一引数に指定した文字列をmystrの中から抽出し、それを第二引数に指定した文字列に置き換えます。
桁を揃える
プログラムによっては、文字列の桁数を揃えて出力したい場合もあります。たとえば、指定した文字や数字で文字列の桁数を揃えたい場合は、rjustメソッドを使用します。
以下のコードをご覧ください。
sample_str = '1111' print(sample_str.rjust(5, '0')) print(sample_str.rjust(5, '#'))
実行結果:
0000001111 ######1111
このように指定した桁数で揃えることができますね!
ちなみに第二引数の文字は数値・文字・記号などを指定することができます。
大文字小文字の変換
文字列の大文字・小文字を変換した場合はupperメソッド及び、lowerメソッドを使用します。
以下のコードをご覧ください。
sample_str = 'Samurai Engineer' print(sample_str.upper()) print(sample_str.lower())
実行結果
SAMURAI ENGINEER samurai engineer
upperメソッドで大文字、lowerメソッドで小文字に簡単に変換できることがわかりますね!
文字列と数値の変換
数値を文字列として扱いたい場合や、その反対に文字列を数値として扱いたい場合は文字列の変換を行います。
まずは、文字列を整数に変換する方法を解説します。
以下のコードをご覧ください。
mystr = '1234' str_to_num = int(mystr) print(type(str_to_num))
実行結果
<type 'int'>
こちらのコードでは、mystrを整数に変換してみました。
変換を行うには、int関数を使用します。int関数の引数として、変換したい文字列を渡すだけです。
今度は反対に、整数から文字列に変換したい場合をご紹介します。
以下のコードをご覧ください。
mynum = 1234 num_to_str = str(mynum) print(type(num_to_str))
実行結果
<type 'str'>
先ほどとの違いは、int関数のかわりにstr関数を使用するところです。
list・tupleを文字列に変換
list(リスト)やtuple(タプル)などを、一時的に文字列に戻して確認したいときは、str関数を使います。
以下のコードをご覧ください。
strList = ["Hello","World!"] strTuple = ("abc","def") print(str(strList)) print(str(strTuple))
実行結果:
['Hello', 'World!'] ('abc', 'def')
str(文字列にしたい値)を入れるだけで、簡単に文字列に変換できます。listやtupleの中身を一時的に確認したいときなどに、便利です。
文字列の比較
二つの文字列が同じかどうか判断するために、文字列を比較したい場合があります。
そんな時は、「==」という比較演算子を使用します。
以下のコードをご覧ください。
mystr1 = 'Hello' mystr2 = 'world' print(mystr1 == mystr2)
実行結果
False
こちらのコードでは、Helloを格納するmystr1がmystr2と同じかどうか確かめてみました。「==」という演算子は、左右の文字列が一致する場合はTrue、異なる場合はFalseを返します。
ご覧いただけるように、Helloとworldは異なるのでFalseが表示されました。また、「==」演算子の他にもis演算子を使う方法もありますが、これは推奨されていません。
詳しくは、こちら記事でご確認ください。
文字列を埋め込む
今までは、変数を文字列に埋め込む方法として%演算子を使用する方法が主流でした。しかし、Python2.6以降はformatメソッドを使用することが可能になりました。
formatメソッドの使い方の例は、次の通りです。
name = "エンジニア太郎" fav_lang = "Python" print('私の名前は{0}です。得意な言語は、{1}です。'.format(name,fav_lang)
実行結果:
私の名前はエンジニア太郎です。得意な言語は、Pythonです。
この例では、変数名name、fav_langに入れた値「エンジニア太郎」と「Python」の文字列を、print関数の出力時に「{0}」「{1}」として指定しています。
format関数はとても便利なので、以下を参考に使い方を覚えておくのがおすすめです!
まとめ
今回はPythonにおける基本的な文字列の使い方と、活用法について解説しました。文字列の操作は知っておけば知っておくほど便利なものばかりなので、しっかり覚えておいて損はありません。
本記事を通して、ご自身でも試して理解を深めてくださいね。
なお、今Pythonを学習している方は以下の記事もどうぞ。
はじめてPythonを使う方でもわかりやすいように、Pythonでできることやその学習法などを中心にまとめています。
復習にも使えると思いますので、ぜひ一度ご覧になってみてくださいね。
【Python 入門完全攻略ガイド】