Pythonにおける文字列操作の基本から応用までを1ページでまとめました。
単に文字列操作と言っても、処理の内容や方法は多くのパターンが存在します。このページでは、Pythonにおける文字列の基本から、文字列操作方法の基本を1通り解説します。
Pythonエンジニアであれば押さえておきたい基本ルールばかりです。
是非最後までご覧ください。(1度で理解しきれない方は、是非ブックマークを!)
Python:文字列の基本
Pythonにおける文字列は、「"」(ダブルクォーテーション)、もしくは「'」(シングルクォーテーション)で囲んで表現します。
print("Hello World!") print('Hello World!') # Hello World! # Hello World!
ダブルクォーテーションとシングルクォーテーションのどちらを利用するかは個人の好みです。
ただし、併用はNGです。
print("Hello') print('Hello") # SyntaxError: EOL while scanning string literal
文字列の中にシングルクォーテーションとダブルクォーテーションを含めることもできます。この場合は、文字列の中に含まれないほうのクォーテーションを利用します。
print("「''」シングルクォーテーション") print('「""」ダブルクォーテーション') # 「''」シングルクォーテーション # 「""」ダブルクォーテーション
複数行の文字列「"""」 「'''」
クォーテーションを3つ続けることで、文字列を複数行にすることも可能です。
a = ''' 1行目 2行目 3行目 ''' print(a) # 1行目 # 2行目 # 3行目
a = """ 1行目 2行目 3行目 """ print(a) # 1行目 # 2行目 # 3行目
見た目を分かりやすくするために、上記のようなコードで説明しました。厳密に言うと、最初の行はクォーテーション記号の直後から始まるためその点だけ注意が必要。
a = """0行目 1行目 2行目 3行目 4行目""" print(a) # 0行目 # 1行目 # 2行目 # 3行目 # 4行目
文字列を複数行で表示させたい場合には、エスケープシーケンスを利用する方法もあります。
print("1行目\n2行目") """ 1行目 2行目 """
エスケープシーケンスについては、以下の記事で詳しく解説しています。1つレベルアップした内容まで理解したい方は是非ご覧ください。
Python:文字列操作
Pythonにおける文字列の操作を理解したところで、ここからは様々な文字列の操作方法を解説していきます。
Pythonの文字列は、immutable(変更不可)です。これは、「abcdef」という文字列を部分的に書き換えて「abc123」とすることはできないということ。

他のプログラミング言語の中には、文字列の左から〇番目を書き換える処理ができたりしますが、Pythonではそのような書き換えができないという点に注意しましょう。
その前提を踏まえ、主な文字列操作の方法を解説します。
文字列の連結(+)
文字列を連結するには、+演算子を利用します。
a = "Hello" b = "World!" print(a + b) # HelloWorld!
a = "Hello" b = "World!" print(a + " " + b) # Hello World!
以下のように、文字列と数字などを結合しようとすると、「 TypeError: can only concatenate str (not "int") to str 」となります。
a = "私の年齢は" # 変数aは文字列 b = 100 # 変数bは数値 print(a + b)
これは、データ型の変換を行っていないためです。エラーの原因や解決方法を学びたいかたは、以下の記事をご覧ください。
文字列の追加(+=)
文字列に別の文字列を追加したい場合は、+=演算子を利用します。
a = "私は" a += "Pythonを" a += "勉強して" a += "います。" print(a) # 私はPythonを勉強しています。
追加されるのは、文字列の後ろだけ。
文字列の先頭に別の文字列を追加するには、代入する側とされる側を逆にする等の対応が必要です。
文字列の繰り返し(*)
「*」を利用することで、同じ文字列を繰り返しで連結することもできます。
a = "Hello!" print(a * 10) # Hello!Hello!Hello!Hello!Hello!Hello!Hello!Hello!Hello!Hello!
スライス(文字列の抽出)
文字列の中から、特定の文字を抽出することをスライスと言います。
オブジェクト[インデックス番号]
a = '私はPythonを勉強しています。' print(a[0]) # インデックス番号0 print(a[1]) # インデックス番号1 print(a[:5]) # インデックス番号4まで print(a[5:]) # インデックス番号5から print(a[5:10]) # インデックス番号5から9まで # 私 # は # 私はPyt # honを勉強しています。 # honを勉
「:」は「~」と同じような意味です。
注意すべきは、インデックス番号は0から始まるということ。(これは配列の考え方と同じですね。)

初心者の方ほど、この点を誤りやすいので注意して覚えておきましょう。
また、実はインデックス番号はマイナスを指定することもできます。

a = '私はPythonを勉強しています。' print(a[-4]) # インデックス番号-1 print(a[:-4]) # インデックス番号-1まで # い # 私はPythonを勉強して
Python:文字列メソッド
Pythonでは、変数もオブジェクトの1つです。
そのため、文字型の変数を定義した時点で様々なメソッドを利用することが可能になります。
この章では、文字列操作のメソッドの中で覚えておきたい必須メソッドを解説していきます。
大文字変換/upper
文字列を小文字から大文字に変換するメソッドです。
大文字は大文字のまま表示されます。
str.upper()
※strは文字列が格納されている変数を示します。
a = 'abcdefg' print(a.upper()) # ABCDEFG
ちなみに、日本語の場合は何も起こりません。
a = 'あいうえお' print(a.upper()) # あいうえお
小文字変換/lower
文字列を大文字から小文字に変換するメソッドです。upperメソッド同様、小文字は小文字のまま表示されます。
str.lower()
※strは文字列が格納されている変数を示します。
a = 'ABCDFEG' print(a.lower()) # abcdefg
"ABCDEFG" が "abcdefg" に変換されます。
a = 'ABCabcあいうえお' print(a.lower()) # abcabcあいうえお
日本語については、何も変換されずそのまま表示。もともと小文字だった文字もそのまま表示されます。
置換(replace)
replaceメソッドを利用すると文字列を置換することができます。
str.replace()
※strは文字列が格納されている変数を示します。
a1 = 'Today is rainy.' a2 = a1.replace('rainy', 'sunny') print(a1) print(a2) # Today is rainy. # Today is sunny.
ただし、冒頭でも述べたように、Pythonでは文字列の一部を変換することができません。

replaceメソッドは、あくまでも置換した文字列を別の変数に格納するという処理を行います。

もとの変数a1の文字列は置換されないという点に注意しましょう。
文字列の埋め込み(format)
formatメソッドを利用することで、文字列を別の文字列オブジェクトに埋め込むことができます。
str.format(変数1,変数2,変数3,・・・)
※strは文字列が格納されている変数を示します。
使い方はとっても簡単。以下をご覧ください。
ame = "山田太郎" job = "エンジニア" text = "{0}は、{1}です。" print(text.format(name,job)) # 山田太郎は、エンジニアです。
予め文字列の中に引数を「{}」で埋め込んでおくだけ。
formatメソッドでは、その引数に渡す内容を定義するだけです。変数でも文字列を直接埋め込む方法でもどちらでもOK。したがって以下のような書き方も可能です。
text = "{0}は、{1}です。" print(text.format("山田太郎","エンジニア")) # 山田太郎は、エンジニアです。
Pythonを1から学習したい方は
Pythonをより実践的に学びたい―。実際にコーディングをしながら学びたい―。独学に限界を感じている―。
そんな方には、無料体験/オンライン完結もあるプログラミングスクールで学ぶのがおすすめです。都度検索しながら知識を補完していくのではなく、1から体系立てて学ぶことで短時間・かつ効率的にスキルハックすることが可能です。
各プログラミングスクールの特徴をまとめた記事をこちらに記載しておきますので、是非ご覧ください。