プログラミングを学ぶ上で、数値を扱うのと同じくらい重要なのが「文字列」の扱いです。Pythonは、この文字列操作が非常に得意で、直感的に書けるように設計されています。
この記事では、Pythonの文字列操作について、基本的な作り方から、連結、スライス、便利なメソッドまで、初心者の方にも分かりやすく解説します。
この記事を読み終える頃には、Pythonでテキストデータを自由自在に扱えるようになるための、しっかりとした基礎が身についているはずです。
はじめに:Pythonにおける文字列とは?
まず、Pythonにおける文字列とは**「文字の並び」**のことです。'hello'や'こんにちは'のように、文字が連なったデータだと考えてください。
プログラムでは、ユーザーからの入力を受け取ったり、ファイルからテキストを読み込んだり、画面にメッセージを表示したりと、文字列を扱う場面が非常に多くあります。Pythonの強力な文字列操作機能を使いこなすことが、効率的なプログラミングへの第一歩です。
この記事を読めば、以下のことができるようになります。
- Pythonで文字列を正しく作成できる
- 文字列同士を連結したり、繰り返したりできる
- 文字列の中から特定の部分だけを抜き出せる(スライス)
- 文字列に変数の値を埋め込める(f-string)
- 実務でよく使う便利な文字列メソッドを使いこなせる
Pythonでの文字列の基本的な作り方
Pythonで文字列を作成するのはとても簡単です。いくつかの方法を覚えましょう。
シングルクォートとダブルクォートの違い
シングルクォート (') または ダブルクォート (") で文字を囲むと、それが文字列として認識されます。
どちらを使っても機能的な違いはありません。ただし、文字列の中にクォート自体を含めたい場合に使い分けると便利です。
# シングルクォートで作成
str1 = 'Hello, Python!'
print(str1)
# ダブルクォートで作成
str2 = "Hello, Python!"
print(str2)
# 文字列の中にダブルクォートを含めたい場合は、全体をシングルクォートで囲む
str3 = 'He said, "Python is easy."'
print(str3)
# 文字列の中にシングルクォートを含めたい場合は、全体をダブルクォートで囲む
str4 = "It's a beautiful day."
print(str4)複数行の文字列はトリプルクォートが便利
改行を含むような複数行にわたる文字列を作成したい場合は、トリプルクォート (''' または """) を使います。
メールの本文や、長い文章をプログラム内で扱いたいときに非常に役立ちます。
multi_line_str = """こんにちは。
Gemです。
Pythonの文字列操作について解説します。
"""
print(multi_line_str)特殊な文字を表現するエスケープシーケンス
文字列の中で、改行やタブといった特殊な文字を表現したい場合は、エスケープシーケンスを使います。これはバックスラッシュ (\) と特定の文字を組み合わせたものです。
よく使うものをいくつか覚えておきましょう。
\n: 改行\t: タブ\': シングルクォート\": ダブルクォート\\: バックスラッシュ自体
# \n で改行
print("Hello\nWorld")
# \t でタブ
print("Name:\tGem")
# \' でシングルクォートを表現
print('It\'s a pen.')覚えておきたい!文字列の基本操作
次に、文字列を作成した後の基本的な操作方法を見ていきましょう。
文字列を繋げる「連結」(+演算子)
+ 演算子 を使うと、文字列同士を簡単に連結できます。
数値の足し算と同じ記号なので、直感的で分かりやすいですね。
str1 = "Python"
str2 = " "
str3 = "入門"
result = str1 + str2 + str3
print(result) # 出力: Python 入門文字列を繰り返す(*演算子)
* 演算子 を使うと、同じ文字列を複数回繰り返すことができます。
区切り線などを作りたいときに便利です。
line = "-" * 20
print(line) # 出力: --------------------
laugh = "ha" * 3
print(laugh) # 出力: hahaha文字列の長さを調べる len()
文字列が何文字で構成されているかを知りたい場合は、組み込み関数の len() を使います。
text = "Hello, World!"
length = len(text)
print(f"「{text}」の長さは {length} 文字です。")
# 出力: 「Hello, World!」の長さは 13 文字です。特定の文字を抜き出す「スライス」を使いこなす
文字列の中から、一部分だけを取り出したい場面は頻繁にあります。その際に使うのがスライスというテクニックです。
インデックス番号で1文字取得
文字列の各文字には、先頭から 0, 1, 2, … というインデックス番号が割り当てられています。この番号を指定することで、特定の1文字を取得できます。
text = "Python"
# 最初の文字 (インデックス 0)
print(text[0]) # 出力: P
# 3番目の文字 (インデックス 2)
print(text[2]) # 出力: t
# マイナスを使うと末尾から数えられる
print(text[-1]) # 出力: n範囲を指定して部分的に取得する基本のスライス
[開始インデックス:終了インデックス] のようにコロン (:) を使って範囲を指定すると、その部分の文字列をまとめて取得できます。
重要なのは、終了インデックスの文字は含まれないという点です。
text = "abcdefg"
# インデックス1から3まで (4の手前まで)
print(text[1:4]) # 出力: bcd
# 最初からインデックス4まで
print(text[:5]) # 出力: abcde
# インデックス2から最後まで
print(text[2:]) # 出力: cdefg変数を埋め込むなら「f-string」が現代的
文字列の中に変数の値を埋め込みたいことはよくあります。Python 3.6以降では f-string という方法を使うのが最も簡単で推奨されています。
f-stringの基本的な使い方
文字列の前に f を付け、埋め込みたい変数を波括弧 {} で囲むだけです。
非常に可読性が高く、直感的に書くことができます。
name = "Gem"
age = 3
# f-string を使った文字列フォーマット
greeting = f"こんにちは、私の名前は{name}です。年齢は{age}歳です。"
print(greeting)
# 出力: こんにちは、私の名前はGemです。年齢は3歳です。(参考)旧来のフォーマット方法
f-stringが導入される前は、format() メソッドや % 演算子が使われていました。古いコードを読む際に出てくる可能性があるので、参考までに知っておくと良いでしょう。
name = "Gem"
age = 3
# format() メソッド
text_format = "こんにちは、私の名前は{}です。年齢は{}歳です。".format(name, age)
print(text_format)
# %演算子
text_percent = "こんにちは、私の名前は%sです。年齢は%d歳です。" % (name, age)
print(text_percent)これだけは押さえたい!便利な文字列メソッド5選
Pythonの文字列には、便利な機能(メソッド)が数多く用意されています。ここでは、特に使用頻度が高いものを5つ厳選して紹介します。
split():特定の文字で文字列を分割する
split() は、指定した区切り文字で文字列を分割し、結果をリストとして返します。
CSVデータのように、カンマで区切られたデータを扱う際などに非常に強力です。
csv_data = "apple,banana,orange"
fruits_list = csv_data.split(',')
print(fruits_list) # 出力: ['apple', 'banana', 'orange']
print(fruits_list[1]) # 出力: bananareplace():特定の文字列を置換する
replace() は、文字列内のある部分を別の文字列に置き換えます。
text = "今日はいい天気ですね。"
new_text = text.replace("天気", "お天気")
print(new_text) # 出力: 今日はいいお天気ですね。strip():両端の不要な空白や文字を削除する
strip() は、文字列の先頭と末尾にある不要な空白(スペース、タブ、改行)を削除します。
ユーザーからの入力フォームのデータを整形する際などによく使われます。
raw_input = " Hello, World! \n"
cleaned_text = raw_input.strip()
print(f"元の文字列: '{raw_input}'")
print(f"整形後の文字列: '{cleaned_text}'")
# 整形後の文字列: 'Hello, World!'find():文字列が含まれているか検索する
find() は、指定した文字列が最初に現れるインデックスを返します。もし見つからなかった場合は -1 を返します。
in 演算子を使えば、単純に含まれているかどうかの真偽値(True/False)を調べることもできます。
text = "I love Python programming."
# 'Python' の開始位置を検索
index = text.find("Python")
print(index) # 出力: 7
# 'Java' は含まれていないので -1 が返る
index_java = text.find("Java")
print(index_java) # 出力: -1
# in演算子で存在チェック
if "Python" in text:
print("Pythonという文字列が含まれています。")まとめ
今回は、Pythonにおける文字列の基本的な扱い方について、網羅的に解説しました。
- 作り方:
'',"","""で囲む - 基本操作:
+で連結、*で繰り返し、len()で長さを取得 - 部分取得:
[ ]を使ったインデックス指定やスライス - 変数埋め込み: f-string
f"{variable}"が便利でモダン - 便利メソッド:
split,join,replace,strip,findは頻出
文字列操作は、プログラミングのあらゆる場面で必要となる基本的なスキルです。この記事で紹介した内容をマスターすれば、テキストデータを扱うさまざまなタスクに自信を持って取り組めるようになります。
ぜひ、実際にコードを書いて動かしながら、一つ一つの操作を自分のものにしていってください。


コメント