Pythonで文字列を生成するには?使い方をわかりやすく解説

プログラミングで基本的なデータ型の1つとなる文字列。
Pythonには文字列を効率的に扱うための豊富な機能が用意されており、適切に使いこなせば効率的な開発が可能になります。
本記事では、文字列の基本的な扱い方から、検索・置換、フォーマットなどの実践的な操作方法まで、具体的なコード例を交えて解説します。
WEBスクレイピングやAPI連携などの実務シーンを意識しながら、段階的に文字列操作の基礎を学んでいきましょう。
Contents
Pythonの文字列(string)とは
文字列(string)は、Pythonでテキストデータを扱うデータ型で、0個以上の文字の連なりが文字列となります。
Pythonでは文字列を下記のように記述します。
# シングルクォート(’)、ダブルクォート(”)いずれかで囲みます。
# シングルクォート(’)、ダブルクォート(”)どちらも機能に違いはありません。
# text1・text2のどちらも同じ文字列を表します
text1 = ‘Pythonの文字列’
text2 = “Pythonの文字列”
# クォート記号を含む例
message1 = “It’s a nice day” # シングルクォートを含む場合
message2 = ‘プログラムで”Hello”と表示する’ # ダブルクォートを含む場合
複数行にわたる文字列は、トリプルクォート(’’’ または “””)で作成します。
long_text = “””これは
複数行にわたる
文字列です。”””
また、Pythonの文字はUnicodeが採用されており、日本語ほか多言語の文字を自然に扱えます。
文字列でできること
本項では文字列でできる主な操作を見ていきましょう。
文字列のフォーマット
フォーマットとは、変数の値を文字列に組み込む方法です。
f-stringはPython 3.6以降で推奨の方法です。
name = “太郎”
result = f”ごきげんよう、{name}さん”
# 結果: ごきげんよう、太郎さん
format()を使う方法もあります。
print(“ごきげんよう、{}さん”.format(name))
文字列の検索・置換
find()は特定の文字列を検索し、最初の位置を返します。
text = “Hello, World”
index = text.find(“World”) # Worldの開始位置を検索
print(index) # 結果: 7
index = text.find(“Python”) # 存在しない文字列を検索
print(index) # 結果: -1
replace()は指定文字列を別の文字列に置換します。
text = “Hello, World”
new_text = text.replace(“World”, “R-Stone”)
print(new_text) # 結果: Hello, R-Stone
より複雑なマッチングには、正規表現モジュール(re)を使用します。
import re
text = “私のメールアドレスは、example@example.comです。”
# メールアドレスに適合する正規表現をpatternへ代入
pattern = r”[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}”
match = re.search(pattern, text) # patternに適合する部分を検索する
if match: # 適合する部分が見つかった場合
print(“メールアドレス:”, match.group()) # 結果: example@example.com
文字列の変換・加工
upper()は文字列をすべて大文字に、lower()はすべて小文字に変換します。
text = “Hello, World”
upper_text = text.upper() # 結果: HELLO, WORLD
lower_text = text.lower() # 結果: hello, world
空白を除去するには、strip()系メソッドが便利です。
text = ” Hello, World “ # 左右両端に空白がある文字列
stripped_text = text.strip() # 両端から除去 結果: “Hello, World”
lstripped_text = text.lstrip() # 左端から除去 結果: “Hello, World “
rstripped_text = text.rstrip() # 右端から除去 結果: ” Hello, World”
文字列を分割するには、split()を使います。
text = “apple,banana,orange”
fruits = text.split(“,”) # 指定文字で分割しリストにする
print(fruits) # 結果: [‘apple’, ‘banana’, ‘orange’]
文字列(string)の基本的な使い方
次に文字列内の位置や長さを表す方法を見ていきましょう。
長さの取得
len()関数を使って文字数を取得できます。
text = “ごきげんよう、Python!”
print(len(text)) # 結果: 14
文字数とバイト数は異なる場合があります。バイト数は以下のように求めます。
text = “ごきげんよう、Python!”
byte_length = len(text.encode(‘utf-8’)) # 結果: 28
空文字列かどうかの判定は、文字列を直接条件式に使っておこなえます。
text = “”
if not text: # 文字列を直接条件式に使う場合
print(“文字列は空です”)
if len(text) == 0: # len()を使う場合
print(“文字列は空です”)
文字列のインデックス
インデックスとは文字列内の各文字の位置を示す数値で、Pythonでは0から始まります。
# 特定の文字にインデックス指定でアクセスする例
text = “R-Stone”
first_char = text[0] # 結果: ‘R’
third_char = text[2] # 結果: ‘S’
負のインデックスも使用でき、末尾から数えます。
text = “R-Stone”
last_char = text[–1] # 結果: ‘e’
second_last = text[–2] # 結果: ‘n’
長さを超えたインデックスを指定すると例外が発生するので注意が必要です。
text = “R-Stone”
try:
char = text[10] # インデックスが範囲外
except IndexError:
print(“インデックスが範囲外です”)
文字列のスライス
スライスを使うと、文字列の一部(部分文字列)を取得できます。
基本的な構文は[開始:終了]です。
開始インデックスから終了インデックスの手前までの部分が取得されます。
# スライス構文で部分文字列にアクセスする例
text = “Python Programming”
substring = text[0:6] # 結果: ‘Python’
インデックスは省略できます。
# 省略した場合、開始インデックスは0、終了インデックスは文字列の長さとみなされます。
text = “Python Programming”
first_word = text[:6] # 結果: ‘Python’
second_word = text[7:] # 結果: ‘Programming’
ステップ(間隔)も指定できます。
# スライスにステップを指定する例
# 構文は [開始:終了:ステップ] となります。
text = “Python”
every_second = text[::2] # 結果: ‘Pto’
reversed_text = text[::–1] # 結果: ‘nohtyP’
文字列の結合
+演算子やjoin()を使い複数の文字列を1つにまとめられます。
# +演算子を使い文字列を結合する例
first_name = “太郎”
last_name = “山田”
full_name = last_name + ” “ + first_name # 結果: ‘山田 太郎’
# join()はリスト内のテキストを指定の文字でつなぎ合わせます。
words = [“Python”, “は”, “楽しい”, “言語”, “です”]
with_space = ” “.join(words) # 結果: ‘Python は 楽しい 言語 です’
sentence = “”.join(words) # 結果: ‘Pythonは楽しい言語です’
大量の文字列を結合する場合、join()メソッドのほうが高速です。
result = “”
for i in range(1000):
result += str(i) # 効率の悪い方法
# 効率のよい方法
result = “”.join(str(i) for i in range(1000))
おすすめの活用方法
文字列操作が実務で役立つ場面を4つご紹介します。
WEBスクレイピング、API連携では受信データの抽出に使用でき、 設定ファイルからは、文字列処理で設定内容を取得します。
WEBアプリケーションでは、フォーム入力の形式チェックに使用します。
まとめ
文字列はプログラミングの基本要素で、Pythonには豊富な文字列操作機能が用意されています。
インデックスやスライス、文字列結合など、さまざまな手法を使いこなすと、テキスト処理の幅が大きく広がります。まずは基本的な操作から実践してみましょう。