第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")を抽出してください。