文字列とは
文字列(string)は、文字の並びを表すデータ型です。シングルクォート ' またはダブルクォート " で囲みます。
python
s = "Hello, Python!"type(s) # <class 'str'># シングルクォートでも同じs2 = 'Hello, Python!'文字列の長さ
len() 関数で文字列の長さ(文字数)を取得できます。
python
s = "Hello"len(s) # 5文字列の連結
+ 演算子で文字列を連結できます。* 演算子で繰り返せます。
python
"Hello" + ", " + "World!" # "Hello, World!""ab" * 3 # "ababab"文字列とインデックス
文字列の各文字はインデックス(添字)でアクセスできます。インデックスは 0 から始まります。
python
s = "Python"# 0 1 2 3 4 5# -6-5-4-3-2-1 ← 負のインデックスs[0] # 'P'(先頭)s[1] # 'y's[5] # 'n'(末尾)s[-1] # 'n'(末尾、負のインデックス)s[-2] # 'o'注意: Pythonの文字列は不変です。インデックスで文字を変更することはできません。
python
s = "Python"s[0] = 'J' # TypeError! 文字列は変更できない文字列とスライス
スライスを使って、文字列の一部を取り出すことができます。
python
s = "Python"s[0:3] # "Pyt"(0番目から3番目の前まで)s[2:5] # "tho"(2番目から5番目の前まで)s[3:] # "hon"(3番目から末尾まで)s[:3] # "Pyt"(先頭から3番目の前まで)s[:] # "Python"(全体)s[-3:] # "hon"(末尾3文字)ステップ付きスライス
スライスにはステップ(間隔)を指定できます。
python
s = "abcdefgh"s[::2] # "aceg"(2文字おき)s[::-1] # "hgfedcba"(逆順)文字列のメソッド
文字列型には多くのメソッド(機能)が組み込まれています。
大文字・小文字変換
python
s = "Hello, World!"s.upper() # "HELLO, WORLD!"(全て大文字)s.lower() # "hello, world!"(全て小文字)s.capitalize() # "Hello, world!"(先頭だけ大文字)s.swapcase() # "hELLO, wORLD!"(大小を反転)検索・置換
python
s = "Hello, World!"s.find("World") # 7("World" が始まる位置)s.find("Python") # -1(見つからない場合は -1)s.count("l") # 3("l" の個数)s.replace("World", "Python") # "Hello, Python!"分割・結合
python
s = "apple,banana,cherry"parts = s.split(",") # ["apple", "banana", "cherry"]",".join(parts) # "apple,banana,cherry"" ".join(["Hello", "World"]) # "Hello World"空白の除去
python
s = " hello "s.strip() # "hello"(前後の空白を削除)s.lstrip() # "hello "(左の空白を削除)s.rstrip() # " hello"(右の空白を削除)判定メソッド
python
"hello".startswith("he") # True"hello".endswith("lo") # True"hello".isalpha() # True(全て英字)"123".isdigit() # True(全て数字)"hello123".isalnum() # True(英数字のみ)f文字列(フォーマット文字列)
f を先頭につけることで、文字列の中に変数の値を埋め込むことができます。
python
name = "太郎"age = 20f"私の名前は{name}で、{age}歳です。"# "私の名前は太郎で、20歳です。"書式指定も可能です。
python
pi = 3.14159f"πは約{pi:.2f}です。" # "πは約3.14です。"f"{100:05d}" # "00100"(5桁ゼロ埋め)練習: palindrome
文字列が回文(前から読んでも後ろから読んでも同じ)であるかどうかを返す関数 is_palindrome(s) を定義してください。
練習: count_vowels
英文字列に含まれる母音(a, e, i, o, u)の数を返す関数 count_vowels(s) を定義してください。大文字・小文字は区別しません。
練習: word_count
文字列中の単語数を返す関数 word_count(s) を定義してください。単語は空白で区切られているものとします。