Pythonの文字列操作でもう迷わない!初心者でもスッキリわかる基本と活用ワザ

2025年4月23日水曜日

Python

Pythonの文字列操作」って、プログラミングを始めたばかりだと、ちょっとドキドキするテーマかもしれませんね!

この記事を読めば、まるで秘密の呪文を解き明かすみたいに、Pythonでの文字遊びが楽しくてたまらなくなりますよ!

Webサイトのデータをちょこっと加工したり、大量のテキスト情報から必要な部分を抜き出したり…そんなことができるようになる第一歩を踏み出してみませんか?

この記事では、そんな夢を叶えるための基本的な操作から、ちょっと差がつく活用ワザまで、じっくり丁寧にお伝えします。

この記事で学べること

  • Pythonで文字をどうやって扱うのか、その基本のルール
  • 文字の長さを測る方法
  • 複数の文字を一つに合体させるテクニック
  • 長い文字を好きなところで分割する方法
  • 文字の一部を切り取る魔法のようなスライス
  • 特定の文字を探し出す冒険
  • 見つけた文字を別の文字にこっそり入れ替える方法
  • 文字の始まりや終わりを当てるクイズ
  • 余分なスペースをキレイさっぱり消すお掃除術
  • 数字の姿をした文字を本物の数字に変身させる方法

Pythonの文字列操作とは?

まず最初に、「文字列」って何でしょう?

簡単にいうと、文字が連なったものです。例えば、「こんにちは」とか「Python」とか、Webサイトのアドレス「https://www.example.com」も全部、文字列なんです。

Pythonでは、これらの文字列を扱うための様々な機能が用意されています。まるで、おもちゃのブロックを組み合わせて色々な形を作るみたいに、文字列を加工したり、調べたりできるんですよ。

この基本をしっかり押さえておくと、後々もっと複雑なことができるようになります。

Pythonで文字列を扱うための基本操作

さあ、実際にPythonで文字列を操ってみましょう!

文字列は、シングルクォート(')またはダブルクォート(")で囲んで表現します。どちらを使っても基本的に同じですが、文字列の中にクォートを含めたい場合に便利です。

例えば、「It's a pen!」という文字列は、ダブルクォートで囲むと "It's a pen!" と書けますし、シングルクォートを使うなら 'It\'s a pen!' のように、特別な記号(エスケープシーケンス)を使います。

# シングルクォートで囲む
message1 = 'Hello, Python!'
print(message1)

# ダブルクォートで囲む
message2 = "Welcome to the world of strings!"
print(message2)

# 文字列の中にシングルクォートを含める場合
message3 = "I'm a beginner."
print(message3)

# 文字列の中にダブルクォートを含める場合
message4 = 'He said, "Hello!"'
print(message4)

実行結果はこんな感じになります。

Hello, Python!
Welcome to the world of strings!
I'm a beginner.
He said, "Hello!"

「文字列の長さを知る」len()関数の使い方

文字列がどれくらいの長さなのかを知りたい時ってありますよね?

例えば、パスワードの文字数制限をチェックしたり、文章の長さを確認したり。そんな時に役立つのが、Pythonの len() 関数 です。この関数に文字列を渡すと、その文字列に含まれる文字の数を教えてくれます。

text = "Python is fun!"
length = len(text)
print(length)

実行すると…

14

と表示されます。「Python is fun!」はスペースも含めて14文字なんですね!

「文字列を結合する」+演算子とjoin()メソッド

バラバラの文字列を一つにまとめたい!そんな願いを叶えてくれるのが、+ 演算子join() メソッド です。

+ 演算子 は、まるで糊でくっつけるみたいに、二つの文字列を単純につなげます。

greeting = "Hello"
name = "World"
message = greeting + ", " + name + "!"
print(message)

実行結果はこちら。

Hello, World!

一方、join() メソッド は、リストの中の文字列たちを、指定した文字で繋げて一つの文字列にします。たくさんの文字列を効率よく結合したい時に便利です。

words = ["This", "is", "a", "sentence."]
sentence = " ".join(words)
print(sentence)

parts = ["apple", "banana", "cherry"]
fruit_string = ", ".join(parts)
print(fruit_string)

実行すると…

This is a sentence.
apple, banana, cherry

「文字列を分割する」split()メソッド

今度は逆に、長い文字列を特定のルールで分割してみましょう。

そんな時に活躍するのが split() メソッド です。例えば、文章をスペースで区切って単語ごとのリストにしたり、CSVデータをカンマで区切って項目ごとのリストにしたりできます。

text = "Python is a powerful language."
words = text.split(" ")
print(words)

data = "apple,banana,orange"
fruits = data.split(",")
print(fruits)

実行結果はこうなります。

['Python', 'is', 'a', 'powerful', 'language.']
['apple', 'banana', 'orange']

「文字列の一部を取り出す(スライス)」インデックス指定の基本

文字列の中から、欲しい部分だけをちょこっと取り出したい!そんな時に使うのが「スライス」というテクニックです。

文字列は、最初から順番に0, 1, 2…と番号が振られています(これをインデックスと呼びます)。このインデックスを使って、取り出したい範囲を指定します。

text = "Hello, Python!"

# インデックス0から5の手前まで(Hello)
substring1 = text[0:5]
print(substring1)

# インデックス7から最後まで(Python!)
substring2 = text[7:]
print(substring2)

# 最初からインデックス5の手前まで(Hello)
substring3 = text[:5]
print(substring3)

# 最後から数えて6番目から最後(Python!)
substring4 = text[-6:]
print(substring4)

実行してみましょう。

Hello
Python!
Hello
Python!

インデックスの指定方法を覚えると、文字列操作がぐっと楽しくなりますよ!

スライスの応用テクニック

スライスは、もっと色々なことができます。例えば、ステップ値 を指定することで、特定の感覚で文字を飛ばして取り出すことができます。

text = "abcdefghijklmn"

# 最初から最後まで、2つ飛ばしで取り出す
result1 = text[::2]
print(result1)

# 文字列を逆順にする
result2 = text[::-1]
print(result2)

実行結果はこちら。

acegikm
nmlkjihgfedcba

ちょっとした暗号みたいで面白いですよね!

「文字列を検索する」find()とindex()メソッドの違い

文字列の中に、特定の文字や単語が含まれているか調べたい時がありますよね。

そんな時に使うのが find() メソッドindex() メソッド です。どちらも指定した文字列を探しますが、見つからなかった場合の振る舞いが違います。

find() メソッド は、見つからなかった場合に「-1」を返します。

text = "Where is the cat?"
position1 = text.find("cat")
print(position1)

position2 = text.find("dog")
print(position2)

実行結果は…

13
-1

一方、index() メソッド は、見つからなかった場合にエラー(ValueError)を出します。

text = "Where is the cat?"
position3 = text.index("cat")
print(position3)

# position4 = text.index("dog") # これはエラーになります
# print(position4)

どちらを使うかは、プログラムの目的や、見つからなかった場合の処理によって選びます。

「文字列を置換する」replace()メソッド

文字列の中の特定の部分を、別の文字列に置き換えたい!

そんな時に便利なのが replace() メソッド です。例えば、文章の中の誤字を修正したり、特定のキーワードを別の言葉に置き換えたりできます。

text = "I like apple juice."
new_text = text.replace("apple", "orange")
print(new_text)

message = "Hello, Hello, World!"
replaced_message = message.replace("Hello", "Hi", 1) # 最初の1つだけ置換
print(replaced_message)

実行結果はこちら。

I like orange juice.
Hi, Hello, World!

とっても簡単ですね!

「文字列の先頭や末尾をチェックする」startswith()とendswith()メソッド

「この文字列は特定の文字で始まっているかな?」とか、「特定の文字で終わっているかな?」と調べたい時に役立つのが、startswith() メソッドendswith() メソッド です。

これらのメソッドは、調べたい文字列を指定して呼び出すと、結果をTrue(真)かFalse(偽)で返してくれます。

url = "https://www.example.com"
print(url.startswith("http"))
print(url.startswith("ftp"))

filename = "document.txt"
print(filename.endswith(".txt"))
print(filename.endswith(".pdf"))

実行すると…

True
False
True
False

ファイルの種類を判別したり、URLのプロトコルを確認したりするのに便利です。

「文字列の空白を削除する」strip(), lstrip(), rstrip()メソッド

文字列の前後や左右に、うっかり余分なスペースが入ってしまうことってありますよね。

そんな時に、これらのスペースをキレイに取り除いてくれるのが、strip()lstrip()rstrip() メソッドです。

strip() は、文字列の両端(先頭と末尾)にある空白文字を削除します。

lstrip() は、文字列の先頭(left)にある空白文字だけを削除します。

rstrip() は、文字列の末尾(right)にある空白文字だけを削除します。

text1 = "   Hello, World!   "
cleaned_text1 = text1.strip()
print(f"'{cleaned_text1}'") # 前後の空白が消えています

text2 = "   Leading spaces."
cleaned_text2 = text2.lstrip()
print(f"'{cleaned_text2}'") # 先頭の空白だけ消えています

text3 = "Trailing spaces.   "
cleaned_text3 = text3.rstrip()
print(f"'{cleaned_text3}'") # 末尾の空白だけ消えています

実行結果です。

'Hello, World!'
'Leading spaces.'
'Trailing spaces.'

データの整理や比較をする際に、とても役立ちます。

「文字列の型変換」int(), str()関数

プログラミングをしていると、数字の形をした文字列を本当の数字として扱いたい場面や、その逆で、数字を文字列として表示したい場面が出てきます。

そんな時に使うのが、int() 関数str() 関数 です。

int() 関数 は、数字の形をした文字列を整数(int型)に変換します。

str() 関数 は、数値などのデータを文字列(str型)に変換します。

number_str = "123"
number = int(number_str)
print(number + 5) # 文字列が数値に変換されたので計算できます

value = 456
value_str = str(value)
print("The value is: " + value_str) # 数値が文字列に変換されたので結合できます

実行結果は…

128
The value is: 456

ただし、`int()` 関数は、数字として認識できない文字列を渡すとエラーになるので注意が必要です。

Pythonの文字列操作でよくある疑問と解決策

Pythonの文字列操作を学んでいると、「あれ?どうすればいいんだ?」と迷うこともあるかもしれません。ここでは、初心者の方がよく抱く疑問とその解決策をいくつかご紹介します。

Q: 文字列の中の一部の文字だけを変更したいんだけど、どうすればいいの?
A: Pythonの文字列は「変更不能(immutable)」です。つまり、一度作った文字列の一部分だけを直接変更することはできません。もし変更したい場合は、文字列を一旦リストに変換し、リストの要素を変更した後、再び文字列に戻すという方法があります。
text = "hello"
 # text[0] = "H" # これはエラーになります

text_list = list(text)
text_list[0] = "H"
new_text = "".join(text_list)
print(new_text)
  
Q: 大文字と小文字を区別せずに文字列を比較したい場合は?
A: 文字列を比較する前に、どちらかのケース(大文字または小文字)に統一すると良いでしょう。`lower()` メソッドを使うと文字列をすべて小文字に、`upper()` メソッドを使うとすべて大文字に変換できます。
str1 = "Python"
str2 = "python"

if str1.lower() == str2.lower():
  print("同じです!")
else:
  print("違います。")
  
Q: 文字列の中に特定の文字が何回出てくるか数えたいんだけど?
A: `count()` メソッドを使うと、指定した部分文字列が元の文字列の中に何回現れるかを簡単に数えられます。
text = "banana"
count_a = text.count("a")
print(count_a)
  

【まとめ】Pythonの文字列操作をマスターして、プログラミングをもっと楽しく!

この記事では、Pythonの文字列操作の基本的な部分から、ちょっと便利な活用ワザまでをご紹介しました。

最初は「難しそう…」と感じたかもしれませんが、一つ一つの操作は、まるでパズルのピースを組み合わせるように、理解していくと面白いものばかりです。これらのテクニックを身につければ、皆さんのプログラミングの幅がぐっと広がるはず!

さあ、今日から皆さんもPythonの文字列操作を自由自在に操って、プログラミングの世界をもっともっと楽しんでくださいね!

もし、この記事を読んで「やってみよう!」と思っていただけたら、ぜひ色々な文字列で試してみてください。実際に手を動かすことが、理解への一番の近道ですよ!

【関連記事】 「Pythonとは?」に答える最初の一歩

このブログを検索

  • ()

自己紹介

自分の写真
リモートワークでエンジニア兼Webディレクターとして活動しています。プログラミングやAIなど、日々の業務や学びの中で得た知識や気づきをわかりやすく発信し、これからITスキルを身につけたい人にも役立つ情報をお届けします。 note → https://note.com/yurufuri X → https://x.com/mnao111

QooQ