プログラミング | オジサンテクノロジー

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
  • 文字列置換 主な用途:文字列の整形に使用する。

    • 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[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'