第6章 文字列処理

文字列の生成と操作

Pythonではシングルクォート(' ')またはダブルクォート(" ")で囲むことで文字列を生成できます。また、文字列は連結やスライスなどの操作が可能です。

# 文字列の生成
str1 = 'Hello'
str2 = "World"
print(str1)  # Hello
print(str2)  # World

# 文字列の連結
str3 = str1 + ', ' + str2 + '!'
print(str3)  # Hello, World!

# 文字列のスライス
print(str3[0:5])  # Hello


文字列のフォーマット

Pythonの文字列はフォーマットが可能で、変数を文字列内に埋め込むことができます。

name = 'Alice'
age = 20

# f-stringによる文字列のフォーマット
message = f'Hello, {name}. You are {age} years old.'
print(message)  # Hello, Alice. You are 20 years old.


文字列の組み込み関数

Pythonには文字列操作のための便利な組み込み関数があります。

str4 = 'Hello, World!'

# 文字列を大文字にする
print(str4.upper())  # HELLO, WORLD!

# 文字列を小文字にする
print(str4.lower())  # hello, world!

# 文字列の長さを取得
print(len(str4))  # 13


文字列とエスケープシーケンス

文字列中に特殊文字を含めるためにはエスケープシーケンスを利用します。

# 改行を含む文字列
str5 = 'Hello\nWorld'
print(str5)
# Hello
# World


正規表現の基本

文字列のパターンマッチングには正規表現を使用します。Pythonの正規表現操作にはreモジュールを使用します。

import re

str6 = 'Hello, my phone number is 123-4567.'
match = re.search(r'\d{3}-\d{4}', str6)

if match:
    print('Phone number found:', match.group())  # Phone number found: 123-4567
else:
    print('No phone number found.')


文字列とエンコーディング

Pythonでは文字列はUnicodeで管理されていますが、外部の世界とのインターフェースでエンコーディングが必要になる場合があります。

# 文字列をバイト列にエンコードする
s = "こんにちは"
b = s.encode('utf-8')
print(b)  # b'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'

# バイト列を文字列にデコードする
s2 = b.decode('utf-8')
print(s2)  # こんにちは


文字列メソッド

Pythonの文字列には様々な操作を提供するメソッドが用意されています。

s = "hello, world"

# 文字列が特定の文字で始まるかをチェック
print(s.startswith("hello"))  # True

# 文字列が特定の文字で終わるかをチェック
print(s.endswith("world"))  # True

# 文字列内の特定の文字の数をカウント
print(s.count("o"))  # 2

# 文字列内の特定の文字が最初に現れる位置を検索
print(s.find("o"))  # 4


raw文字列とは何か

エスケープシーケンスを無効化したいときは、raw文字列を使います。

# raw文字列
s = r"C:\path\to\file"
print(s)  # C:\path\to\file


Unicodeとは何か

Pythonの文字列はUnicodeで管理されています。Unicodeは、世界中の全ての文字を同等に扱うことを目指した文字コードです。

# Unicode文字列
s = "こんにちは世界"
print(s)  # こんにちは世界


文字列の比較

Pythonでは文字列を比較することも可能です。比較は辞書順(アルファベット順)で行われます。

print("apple" < "banana")  # True
print("apple" > "banana")  # False
print("apple" == "apple")  # True


フォーマット済み文字列リテラル

Python 3.6から導入されたf-stringは、文字列内に変数の値を直接埋め込むことができる機能です。

name = "Alice"
age = 20

# f-stringを使って文字列をフォーマット
s = f"My name is {name} and I am {age} years old."
print(s)  # My name is Alice and I am 20 years old.


練習問題1.

以下の文字列が与えられます。

s = "Python is a high-level programming language."

この文字列から"Python"と"language"を抽出し、"Python language"という新しい文字列を作成してください。


練習問題2.

あなたの名前(name)と年齢(age)を変数として定義し、それらを使用して"Hello, my name is {name} and I am {age} years old."という文字列をf-stringを用いて作成してください。


練習問題3.

以下の文字列が与えられます。

s = "The price of the item is $15.99."

Pythonのreモジュールを使用して、この文字列から価格("$15.99")を抽出してください。