Pythonの文字列はstr型です。stringの略です。
Pythonには文字列を操作する関数がたくさんあります。この記事では、そのうちよく使うものについて、リファレンス形式でまとめます。
長さを取得する
文字列の長さを取得するには
len
を使います。
>>> len('abcdef') 6 >>> len('a') 1
比較
「内容が等しい」は
==
「内容が等しくない」は
!=
です。
>>> 'abc' == 'abc' True >>> 'abc' == 'def' False >>> 'abc' != 'abc' False >>> 'abc' != 'def' True
アルファベットで大文字小文字が含まれるとき、大文字小文字を区別して比較したいならそのまま比較し、区別しないで比較したいなら全て大文字に直すか小文字に直すかして比較します。
大文字に直すのは
upper()
小文字に直すのは
lower()
です。
>>> 'Abc'.upper() 'ABC' >>> 'Abc'.lower() 'abc' >>> 'Abc' == 'aBc' False >>> 'Abc'.upper() == 'aBc'.upper() True >>> 'Abc'.lower() == 'aBc'.lower() True
連結
+
で文字列を連結します。
+=
も使えます。
>>> 'abc' + 'def' 'abcdef' >>> s = 'abc' >>> s += 'def' >>> s 'abcdef'
ただし、他のデータ型と文字列の間の+演算はできません。文字列として連結したいときは、str()で文字列に変換して連結します。
>>> 'abc' + 1 Traceback (most recent call last): File "", line 1, in TypeError: can only concatenate str (not "int") to str >>> 'abc' + str(1) 'abc1'
検索
文字列の中に文字列が含まれているか検索するときには
in
を使います。
>>> 'cde' in 'abcdef' True >>> 'cde' in 'fedcba' False
「その文字列で開始しているか」は
startswith
「その文字列で終了しているか」は
endswith
です。
>>> 'abcdef'.startswith('abc') True >>> 'abcdef'.endswith('def') True
置換
文字列を置換したいときは、
replace(‘置換前の文字列’ , ‘置換後の文字列’)
を使います。
>>> 'abcdef'.replace('a','A') 'Abcdef' >>> 'abcdef'.replace('abc','xyz') 'xyzdef'
ただし、変数を置換しても変数の値が変わるわけではないので注意しましょう。変数の値を変えたいときは自身に代入します。
>>> s = 'abcdef' >>> s.replace('abc','ABC') 'ABCdef' >>> s 'abcdef' >>> s = s.replace('abc','ABC') >>> s 'ABCdef'
置換後の文字列を空文字列にすることで削除が可能です。
>>> s = 'abcdef' >>> s = s.replace('d','') >>> s 'abcef'
分割と連結
splitで文字列を配列に分割します。区切り文字を指定してやります。
>>> s = 'a,b,c,d,e,f' >>> t = s.split(',') >>> t ['a', 'b', 'c', 'd', 'e', 'f']
また、joinで配列の文字列を連結することが可能です。
この関数は少し使い方が特殊なので、下のコードを見てみてください。
>>> t ['a', 'b', 'c', 'd', 'e', 'f'] >>> 'to'.join(t) 'atobtoctodtoetof'
このように、
‘間に挟める文字列’.join(文字列の配列)
として使います。
整形
strip
で、端の空白を切り落とします。改行コードも切り落とされます。
>>> '\n abcdef '.strip() 'abcdef'
Tkinterでフォームから値を取得したとき、stripをかけないと改行コードが入っていたりすることがあります。注意してください。
数への変換
最もよく使うのはint型への変換です。
>>> s = '123' >>> s '123' >>> int(s) 123
他にも、datetimeモジュールにはdatetime型との相互変換の関数なども用意されています。
サンプルコード
では、ここまでのまとめとして、
禁止用語が含まれていたら*に置き換える
というコードを書いてみます。
コード
keywords = ['ダメ', 'ボツ'] data = 'このコードはダメだからボツにするよ' print(data) for keyword in keywords: data = data.replace(keyword, '*') print(data)
実行結果
>>> keywords = ['ダメ', 'ボツ'] >>> data = 'このコードはダメだからボツにするよ' >>> >>> print(data) このコードはダメだからボツにするよ >>> >>> for keyword in keywords: ... data = data.replace(keyword, '*') ... >>> print(data) このコードは*だから*にするよ
文字列操作が簡潔に記述できることが分かったのではないでしょうか。
for文の強力さともあいまって、処理が簡潔ですね。
まとめ
Pythonのstr型には、便利な関数が多数用意されています。
この記事で挙げたものだけでも、使いこなせばかなりの武器になるはずです。
たいていのコーディングはカバーできるでしょう。
先頭だけを大文字にするなど、もっと複雑な関数もあります。
複雑な文字列処理に遭遇したら、自分で処理を書く前に、まず関数で解決できないか関数を探してみてください。
総じて、Pythonには強力な関数が用意されていることが多いので、できるだけそれらの関数を使うようにしましょう。