プログラミング | オジサンテクノロジー
Python備忘(文字列操作)
掲載日:2019/08/18
概要
Pythonのプログラミングに関する備忘録をまとめました。このページでは文字列操作について紹介します。文字列操作
文字列(sText)に対する種々の操作を下記に示す。
-
文字列の長さや位置を取得 主な用途:特定の文字列だけを取得する場合や、文字列長に応じた処理を行う際に使用する。
- len(sText)
文字列の長さを取得する。 - sWord in sText
文字列内にsWordが含まれるか調べる。 - sText.find(sWord,start,end)
文字列内に含まれるsWordの開始インデックスを取得する。 文字列内にsWordが含まれない場合、-1を返す。 また、start,endにより、開始位置と終了位置のインデックスを指定することができる。(指定しない場合は文字列全体に対して行われる。) - sText.count(sWord,start,end)
文字列内に含まれるsWordの数を取得する。 文字列内にsWordが含まれない場合、0を返す。 findと同様、start,endが指定可能
>>> sText = "I have an apple and an orange" >>> sWord = "apple" >>> >>> len(sText) 29 >>> >>> sWord in sText True >>> >>> sText.find(sWord) 10 >>> sText.find(sWord,17) -1 >>> >>> sText.count("apple") 1 - len(sText)
-
文字列置換 主な用途:文字列の整形に使用する。
- sText.replace(sOldWord,sNewWord,count)
sOldWordをsNewWordに置換する。
countを指定した場合、countの数だけ置換を行う。(指定しない場合、全ての置換が行われる。)
>>> sText = "A child cat is a child of a cat. A child of a cat is a child cat." >>> >>> sText.replace("cat","dog") 'A child dog is a child of a dog. A child of a dog is a child dog.' >>> >>> sText.replace("cat","dog",2) 'A child dog is a child of a dog. A child of a cat is a child cat.'- sText.translate(str.maketrans(sOldChars,sNewChars)) sOldCharsに記載された文字を、sNewCharsのそれぞれ対応した位置の文字に置換する。
#Good pattern >>> sText = "1.One, 2.Two, 3.Three" >>> sText.translate(str.maketrans("123","ABC")) 'A.One, B.Two, C.Three' >>> #Bad pattern >>> sText = "1.1st, 2.2nd, 3.3rd" >>> sText.translate(str.maketrans("123","ABC")) 'A.Ast, B.Bnd, C.Crd' - sText.replace(sOldWord,sNewWord,count)
-
スライス操作 主な用途:文字列から特定の箇所を抜き出す。また、反転も可能
-
sText[start:end:step] start番目の文字からend番目の文字までstepの刻みで文字を取得する。それぞれ指定しない場合は下記の動作となる。
- start:文字列の最初から(0)
- end:文字列の最後まで(len(sText))
- step:1
また、それぞれ"-(マイナス)"を使うことで文字列の最後を基準とした指定が可能となる。 これを応用することで、反転処理を行うことができる。
>>> sText = '0123456789' >>> sText[0:3] '012' >>> sText[-3:] '789' >>> sText[:-3] '0123456' >>> sText[3:-3] '3456' >>> sText[::2] '02468' #反転処理 >>> sText[::-1] '9876543210' -
-
アルファベット操作 主な用途:検索時等のアルファベットの正規化に使用する。
- sText.upper()
アルファベットの小文字を大文字にして返す。 - sText.lower()
アルファベットの大文字を小文字にして返す。 - sText.swapcase()
大文字を小文字に。小文字を大文字にして返す。
>>> sText = "Python" >>> sText.upper() 'PYTHON' >>> sText.lower() 'python' >>> sText.swapcase() 'pYTHON' - sText.upper()