2-1

文字列 (string)

文字列とは

文字列(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'
文字列のインデックスPython012345-6-5-4-3-2-1正の添字→負の添字→s[1:4] → "yth"

注意: 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) を定義してください。単語は空白で区切られているものとします。