- 文字列型の使い方
- 文字列のメソッド一覧
- 文字列の切り取り
- 文字列の連結
- 文字列の区切り(join)
- コード変換関数(encode, decode)
- 文字列検索関数(count)
- 文字列の関数(startswith, endwith)
- 文字列の分解関数(split, rsplit, splitlines)
- 文字列の除去関数(strip, rstrip, lstrip)
- 文字列の変換関数(upper, lower, swapcase, replace, capitalize, capitalize)
- 文字列の検索(find, index, rfind, rindex)
- 文字列の条件関数(islower, isupper)
- その他
文字列型の使い方
文字列の基本
文字列型は、ダブルクオーテーション("),シングルクオーテーション(')で囲って宣言する。また、"""~"""とすると改行も自由に挿入して宣言できる。
Example
print(str) # appleが表示される
str = 'orange'
print(str) # orangeが表示される
str = """apple
orange
grape
"""
print(str) # 改行を含んで、apple
orange
grapeと表示される
文字列のメソッド一覧
文字列の切り取り
文字列はシーケンスというデータ構造で保存されている。
シーケンスでは、1つ1つ値を順番に処理できる。
例えば、str = "apple"とした場合、str[0]はa, str[1]はpのように、数値で指定することで、アクセスできる。
(逆に、数値はシーケンスでないため、num = 123としてもnum[0]で1にアクセスすることはできない)
他にも、便利な方法なアクセスの方法がある
str[-1]とした場合、strの最後から数えて一番目の値にアクセスする(appleの場合、e)
str[0:2]とした場合、1番目と2番目にアクセスする(appleの場合、ap)
str[0:5:2]とした場合、1番目から4番目まで1つ飛ばしでアクセスする(appleの場合、ape)。
str[:3]とした場合、初めから3番目までの、1,2,3番目の要素を取り出す(appleの場合app)
str[3:]とした場合は、4番目から最後の要素までを取り出す(appleの場合、le)
str[-1::-1]の場合、最後から一つずと戻って逆順に表示される(appleの場合、elppa)
Example
str = "apple"
print(str[0]) # aと表示
print(str[ 1]) # pと表示
print(str[-1]) # eと表示
print(str[0:2]) # apと表示
print(str[0:2]) # apと表示
print(str[0:5:2]) # apeと表示
print(str[:3]) # appと表示
print(str[3:]) # leと表示
print(str[-1::-1]) # elppaと表示される
文字列の連結
文字列は、数字の計算をするように文字列+文字列とすることで連結できる。
また、文字列 * NとしてNに数字を入れると文字列をN回繰り返す文字列になる。
Example
str1 = "apple " # 変数str1に文字列apple が格納される
str2 = "pen" # 変数str2に文字列penが格納される
str3 = str1 + str2 # 変数str3に変数str1とstr2を連結した文字列(apple pen)が格納される
str4 = str1 * 10 # 変数str4に文字列appleが10回繰り返して格納される
print(str3) # apple penと表示
print(str4) # apple × 10回表示
文字列の区切り(join)
文字列の1文字、1文字の間に区切りを入れる方法もある。
例えば、appleの1文字1文字の間に空白を入れて、a p p l eとしたい場合、" ".join("apple")とする。
Example
str = "apple"
print(" ".join(str)) # appleに空白区切りが挿入されてa p p l eとなる
コード変換関数(encode, decode)
文字列をそのまま文字列として持たずに、コード(utf8,shift-JIS等)を指定して、符号化してbyteの配列として持つ場合がある。
また、byteの配列を文字列に戻すことを復号という。
この際に利用する関数がencodeとdecode。
文字列を型で指定して保存するとき、文字化けを防ぐときなどに利用する。
Example
str = "りんご"
str_encode = str.encode("utf8") # りんごをutf8で符号化して、変数str_encodeに格納する
print(str_encode) # りんごをutf8で符号化したbyte文字列のb'\xe3\x82\x8a\xe3\x82\x93\xe3\x81\x94'が表示される
print(str_encode.decode("utf8")) # 符号化された文字列が復号化されりんごと表示される
print(str_encode.decode("cp932")) # 別の文字コードで復号するとエラーになる(cp932はShift-JIS)
文字列検索関数(count)
文字列中に現れるある文字の数を検索して回数を調べる場合、count関数を用いる
Example
str = "apple"
print(str.count("p")) # strの中にpは2回出てくるため、2が表示される
print(str.count("pl")) # strの中にplは1回出てくるため、1が表示される
文字列の関数(startswith, endwith)
文字列がある文字列から始まっているまたは、終わっているのかを確認するための関数としてstartswithとendwithがある
Example
str = "apple"
print(str.startswith("ap")) # str("apple")はapで始まるため、Trueが返される
print(str.startswith("ae")) # strはaeでは始まらないためFalseが返される
print(str.endswith("le")) # strはaeでは終わらないためFalseが返される
print(str.endswith("ae")) # strはaeでは終わらないためFalseが返される
文字列の分解関数(split, rsplit, splitlines)
文字列を分割する関数として、split,rsplit,splitlinesがある。
splitは文字列の左から指定の文字列で分割し、rsplitは文字列の右から指定の文字列で分割し、splitlinesは改行を分割して配列として格納する
Example
str = "apple,orange,grape"
print(str.split(",")) # strが","で分割され、['apple', 'orange', 'grape']が表示される
print(str.split(",", 1)) # strが","で左から1つ分割され、['apple', 'orange,grape']が表示される
print(str.rsplit(",")) # strが","で右から分割され['apple', 'orange', 'grape']が表示される
print(str.rsplit(",", 1)) # strが","で右から1つ分割され['apple,orange', 'grape']が表示される
str = """apple
orange
grape"""
print(str.splitlines()) # strが改行で分割され['apple', 'orange', 'grape']が表示される
#ちなみにsplitを使って改行できる
print(str.split('\n'))
文字列の除去関数(strip, rstrip, lstrip)
strip関数は、文字列の両端から指定した文字を削除する関数。
rstripの場合、文字列の右側から指定した文字を削除する。
lstripの場合、文字列の左側から指定した文字を削除する。
Example
splited_str = str.strip() # strip関数を空白で呼び出すと、両端から空白を削除した文字列を返す
print(splited_str) # "apple grape"と表示される
str = " apple grape "
splited_str = str.lstrip() # lstrip関数を空白で呼び出すと、左端から空白を削除した文字列を返す
print(splited_str) # "apple grape "と表示される
str = " apple grape "
splited_str = str.rstrip() # rstrip関数を空白で呼び出すと、右端から空白を削除した文字列を返す
print(splited_str) # " apple grape"と表示される
str = "abcdefghijklmn"
splited_str = str.strip("abdmn") # 文字列を引数にして呼び出すと、両端から指定した文字列を削除した文字列を返す
print(splited_str) # 左からaとb,右からmとnが削除され、"cdefghijkl"が表示される
str = "abcdefghijklmn"
splited_str = str.lstrip("abdmn") # lstrip関数の場合、左端から指定した文字列を削除した文字列を返す
print(splited_str) # aとbが削除され、"cdefghijklmn"が表示される
str = "abcdefghijklmn"
splited_str = str.rstrip("abdmn") # rstrip関数の場合、右端から指定した文字列を削除した文字列を返す
print(splited_str) # mとnが削除され、"abcdefghijkl"が表示される
文字列の変換関数(upper, lower, swapcase, replace, capitalize, capitalize)
文字列を別の文字列に変換する関数もたくさんある。
それぞれの使いかたを以下に紹介する。
Example
# upperメソッドは文字列を大文字に、lowerメソッドは小文字にする
str = "apple grape two_apples BANANA"
print(str.upper()) # "APPLE GRAPE TWO_APPLES BANANA"が表示される
print(str.lower()) # "apple grape two_apples banana"が表示される
# swapcaseは大文字を小文字に、小文字を大文字にする
print(str.swapcase()) # "APPLE GRAPE TWO_APPLES banana"が表示される
# replaceは第1引数の文字列を第2引数の文字列に変換する
print(str.replace("ap", "XX")) # "XXple grXXe two_XXples BANANA"が表示される
# capitalizeは最初の文字を大文字に、それ以外を小文字にする
print(str.capitalize()) # "Apple grape two_apples banana"が表示される
# titleは単語の最初を大文字にそれ以外を小文字にする
print(str.title()) # "Apple Grape Two_Apples Banana"が表示される
文字列の検索(find, index, rfind, rindex)
findとindexは、指定した文字列が何番目にあるのか、インデックスを返すメソッド。
ただし、文字列が見つからなかった場合、findは-1,indexはValueErrorを返す点が異なる。
Example
str = "apple grape two_apples BANANA"
print(str.find("apple")) # appleを左から検索しインデックス(0)を返す(indexも同様)
print(str.rfind("apple")) # appleを右から検索しインデックス(16)を返す(rindexも同様)
print(str.find("lemon")) # 検索しても見つからないため、-1を返す
print(str.index("lemon")) # 検索しても見つからないため、ValueErrorが発生する
文字列の条件関数(islower, isupper)
islowerは、文字列が全て小文字の場合Trueを返し、それ以外はFalseを返す。
isupperは、文字列が全て大文字の場合Trueを返し、それ以外はFalseを返す。
Example
lower_str = "apple"
print(upper_str.isupper()) # 全て大文字のため、Trueが表示される
print(upper_str.islower()) # Falseが表示される
print(lower_str.isupper()) # Falseが表示される
print(lower_str.islower()) # 全て小文字のため、Trueが表示される
その他
文字列型の持っている、他にもメソッドは以下参照
公式サイト