mei_13のPython講座 ロゴ

【解説】Pythonで「言葉」を扱う:文字列操作の基本から応用までを優しく学ぶ




Pythonで「言葉」を扱う:文字列操作の基本から応用までを優しく学ぶ


Yukiのアイコン
【Yuki】 今日はPythonの「文字列」について一緒に勉強していきましょう。 プログラミングにおいて、数値と同じくらい……いえ、それ以上に触れる機会が多いのがこの文字列です。 画面にメッセージを表示したり、ユーザーが入力した文字を処理したり……。 少し地味に感じるかもしれませんが、とても奥が深くて、知れば知るほど面白い分野だと思います……。


Hirokiのアイコン
【Hiroki】 よろしくお願いします! 文字列って、単に文字が並んでいるだけだと思っていましたけど、Pythonだと色々なことができるんですよね? 今までなんとなく使っていましたが、基礎からしっかり理解したいです。


Yukiのアイコン
【Yuki】 その意気込み、素敵だと思います……。 まずは基本的な作り方から見ていきましょう。 Pythonでは、文字をシングルクォーテーション(')ダブルクォーテーション(")で囲むことで文字列として定義します。

name = 'Python'
message = "こんにちは"

どちらを使っても基本的には同じですが、例えば「I'm a student」のように文字列の中にシングルクォーテーションが含まれる場合は、外側をダブルクォーテーションで囲むとスムーズですよ。

文字列の結合と繰り返し


Hirokiのアイコン
【Hiroki】 なるほど、使い分けができるんですね。 複数の文字列をくっつけたい時はどうすればいいんでしょうか?


Yukiのアイコン
【Yuki】 文字列同士を繋げるには、プラス演算子(+)を使います。 また、同じ文字を繰り返したい時はアスタリスク(*)が使えるんです。 少し試してみましょうか。

greeting = "こんにちは" + "、" + "Hirokiくん"
print(greeting) # こんにちは、Hirokiくん

laugh = "は" * 3
print(laugh) # ははは


Hirokiのアイコン
【Hiroki】 おもしろいですね!掛け算で文字が増えるのは直感的でわかりやすいです。 これなら、装飾用の記号をたくさん並べたい時とかに便利そうです。


Yukiのアイコン
【Yuki】 ええ、そうですね。 ただ、文字列と数値をそのまま「+」で繋げようとするとエラーになってしまうので、そこだけは注意が必要かもしれません……。

インデックスとスライス:文字を取り出す魔法


Yukiのアイコン
【Yuki】 次に、文字列の中から特定の文字を取り出す方法についてお話ししますね。 Pythonの文字列は、文字が順番に並んだ「シーケンス」というデータの集まりなんです。 それぞれの文字には、左から順に 0, 1, 2... と番号が振られています。これをインデックスと呼びます。


Hirokiのアイコン
【Hiroki】 0から始まるんですね。1からじゃないのがプログラミングらしいというか、少し慣れが必要そうです。


Yukiのアイコン
【Yuki】 ふふ、そうですね。最初は少し戸惑うかもしれませんが、すぐに慣れると思います……。 また、右端から数える「マイナスのインデックス」というのもあって、一番最後の文字は -1 で指定できるんですよ。

word = "Python"
print(word[0])  # P
print(word[-1]) # n

さらに便利なのがスライスという機能です。 [開始:終了] と書くことで、文字列の一部を切り取ることができます。

print(word[0:2]) # Py (0番目から2番目の手前まで)
print(word[2:])  # thon (2番目から最後まで)


Hirokiのアイコン
【Hiroki】 スライスは強力ですね! わざわざループを回したりしなくても、欲しい部分だけサッと取り出せるのは助かります。


Yukiのアイコン
【Yuki】 ええ。……実は、わたしはWebデザインを考えるのも好きなんですけど、長いタイトルの一部だけを表示して、あとは「...」で省略したい時なんかに、このスライスがとても役に立つんですよ。 文字列の長さを取得する len() 関数と組み合わせると、もっと表現の幅が広がるはずです。

文字列は「不変」な存在


Yukiのアイコン
【Yuki】 ここで、ひとつ大切なルールを覚えておいてほしいんです。 Pythonの文字列はイミュータブル(不変)という性質を持っています。 一度作った文字列の中身を、後から直接書き換えることはできないんです……。


Hirokiのアイコン
【Hiroki】 えっ、そうなんですか? 例えば word[0] = "J" みたいにして、"Python" を "Jython" に変えることはできないってことですか?


Yukiのアイコン
【Yuki】 はい、それを実行するとエラーになってしまいます……。 もし変えたい場合は、新しく文字列を作り直して、変数に代入し直す必要があるんです。

word = "Python"
word = "J" + word[1:]
print(word) # Jython

少し不便に感じるかもしれませんが、これによってデータの安全性が保たれている部分もあるんですよ。

便利な文字列メソッド


Hirokiのアイコン
【Hiroki】 書き換えられないのは意外でした。でも、新しい変数に入れればいいだけなら、工夫次第でどうにでもなりそうですね。 他にも、文字列を便利に扱うための機能ってありますか?


Yukiのアイコン
【Yuki】 たくさんありますよ。文字列には「メソッド」と呼ばれる、便利な専用機能が備わっています。 よく使うものをいくつか紹介しますね。

  • upper() / lower(): 大文字・小文字に変換します。
  • replace(古い文字, 新しい文字): 文字を置換します。
  • strip(): 前後の余計な空白を取り除きます。
  • split(区切り文字): 文字列を分割してリストにします。
text = " Python Programming "
print(text.strip().upper()) # PYTHON PROGRAMMING
print(text.replace("Python", "Java")) #  Java Programming 


Hirokiのアイコン
【Hiroki】 strip() は入力フォームの処理とかでよく見かけそうです。 ユーザーがうっかりスペースを入れてしまっても、これなら安心ですね。


Yukiのアイコン
【Yuki】 そうですね。特にWeb制作の現場では、フォントの表示を綺麗に保つためにも、こうしたデータのクレンジングは欠かせない工程なんです。 わたし……実はフォントへのこだわりが結構強くて。 せっかくの文字列も、表示されるフォントが少しズレていたり、意図しない空白があったりすると、気になって夜も眠れなくなってしまうことがあって……あ、もちろん夜行性なので起きてはいるんですけど。


Hirokiのアイコン
【Hiroki】 Yukiさんのこだわり、伝わってきます(笑)。 データの見た目を整えるのも、プログラミングの大事な役割なんですね。

f-strings(フォーマット済み文字列リテラル)


Yukiのアイコン
【Yuki】 最後に、今のPythonで最も推奨されている文字列の組み立て方、f-stringsについて教えますね。 これを使うと、文字列の中に変数の値をとても自然に埋め込むことができるんです。


Hirokiのアイコン
【Hiroki】 今までは + で繋いでいましたけど、もっと楽な方法があるんですか?


Yukiのアイコン
【Yuki】 はい。文字列の前に f または F を付けて、埋め込みたい変数を波括弧 {} で囲むだけです。

name = "Hiroki"
score = 95
print(f"こんにちは、{name}くん。今回のテストは{score}点でしたね。")

これなら、型を気にして str() で変換したりする手間も省けますし、コードも読みやすくなります。 数値の桁数を指定したり、日付のフォーマットを整えたりすることもできる、とても多機能な書き方なんです。


Hirokiのアイコン
【Hiroki】 これはすごい!さっき言っていた「数値との結合エラー」も、これなら気にしなくていいんですね。 これから文字列を組み立てる時は、積極的に使っていこうと思います。


Yukiのアイコン
【Yuki】 ぜひ、活用してみてください……。 文字列を自由に扱えるようになると、プログラムがぐっと人間味のあるものに変わっていくはずです。 誰かの役に立つために書かれた小さなスクリプトでも、丁寧なメッセージが表示されるだけで、そのツールに「心」が宿ったような気がしませんか……?


Hirokiのアイコン
【Hiroki】 そうですね。ただのデータの羅列じゃなくて、ちゃんとコミュニケーションを取っている感じがします。 今日はありがとうございました、Yuki先生!文字列のこと、かなり深く理解できた気がします。


Yukiのアイコン
【Yuki】 お役に立てたなら嬉しいです。 一度に全部覚えようとしなくても大丈夫ですよ。 何か困ったことがあれば、いつでも聞いてくださいね。……わたしも、のんびりとお手伝いさせていただきますから。

参考資料



「文字列」のサンプルコードを見る

< 配列
コラム一覧に戻る
正規表現 >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
● 高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!



AIアシスタント Yuki