Python入門|文字列操作の基本をマスター【str型】のイメージ画像

Python入門|文字列操作の基本をマスター【str型】

  • 公開日:2018/05/28
  • 更新日:2019/07/15
  • 投稿者:n bit

Pythonを使ったプログラミングに限らず多くの場合、文字列を扱うことが頻繁にあります。今回はその文字列操作について学習していきます。Pythonにおいて文字列のデータ型はstr型でしたね。つまり、str型の基本操作について学習します。

  • Python

この記事は約 分で読めます。(文字)

【str型】文字列操作の基本

プログラミングでは頻繁に出てくる文字列【データ型:str型】の基本操作を習得していきます。データ型について忘れてしまった方は下記のページでデータ型について復習しておいてください。

str型の作成方法

データ型のセクションでいちど行いましたね。復習を兼ねてもう一度解説しておきます。

データ型のstr型を作成するにはダブルクォーテーション【"】、または、シングルクォーテーション【'】で囲んだ文字列を代入します。

x = 'テキスト'
print(x)

print(type(x))

出力結果

テキスト

<class 'str'>

'str'タイプと表示されていることが確認できます。

print関数のところでも一度説明しましたが、ダブルクォーテーション【"】、シングルクォーテーション【'】はどちらを使っても問題ありません。選択基準は半分は好みになります。私はソースコードがシンプルに見られるのでシングルクォーテーション【'】を優先して利用しています。

残り半分の選択基準はダブルクォーテーション【"】、または、シングルクォーテーション【'】で囲まれる文字列の内容によります。例えばhtmlコードなどを代入する場合はダブルクォーテーション【"】が含まれていますのでシングルクォーテーション【'】で囲んであげる必要があります。

x = '<a href="http://test.com/a.html">〇〇へリンク</a>'

print(x)

出力結果

<a href="http://test.com/a.html">〇〇へリンク</a>

もしダブルクォーテーション【"】が含まれる文字列をダブルクォーテーション【"】で囲った場合はSyntaxErrorが返されます。

x = "<a href="http://test.com/a.html">〇〇へリンク</a>"

print(x)

出力結果

SyntaxError: invalid syntax

「SyntaxError: invalid syntax」は「構文エラー:無効な構文」と言う事で、何かしら基本構文に反する記述エラーがある場合に出力されてきます。

複数行のstr型作成方法

続けて複数行の文字列操作の解説を行います。先ほどまでは1行の文字列を変数に代入してきました。しかし、文字列操作を行う上で複数行の文字列を扱うことも多いかと思います。そのような場合はダブルクォーテーション【"】、または、シングルクォーテーション【'】を3つ続けて入力することで複数行の文字列を扱えるようになります。

x = '''

<h1>タイトル</h1>
<a href="http://test.com/a.html">〇〇へリンク</a>
'''
print(x)

出力結果



<h1>タイトル</h1>
<a href="http://test.com/a.html">〇〇へリンク</a>

このように複数行の文字列を出力することができます。出力された結果を確認すると1行目と4行目に空白行があることが確認できます。これは最初のシングルクォーテーション【'】3つのすぐ後と、最後のシングルクォーテーション【'】3つの前で改行が行われているためです。

これを回避するための方法が2つ用意されています。

1:空白行が発生してる行の改行を削除

1つ目は単純に空白行が発生している行の改行を削除してしまう方法です。

x = '''<h1>タイトル</h1>

<a href="http://test.com/a.html">〇〇へリンク</a>'''
print(x)

出力結果

<h1>タイトル</h1>

<a href="http://test.com/a.html">〇〇へリンク</a>

好みもあるかと思いますがこちらの方法は若干ソースコードが読みにくくなります。それを嫌う場合もう一つの方法で空白行を削除することができます。

2:バックスラッシュ【\】を利用する

バックスラッシュ【\】を利用することで見た目上は改行していますがコード上はそのまま継続して記述すると言う意味合いになります。そのためバックスラッシュ【\】の後には改行コードが生成されないため出力結果に空白行が表示されなくなります。

x = '''\

<h1>タイトル</h1>
<a href="http://test.com/a.html">〇〇へリンク</a>\
'''
print(x)

出力結果

<h1>タイトル</h1>

<a href="http://test.com/a.html">〇〇へリンク</a>

演算子を使った文字列の操作

数値の計算と同じように文字列の操作にも演算子が用意されています。文字列で利用できる演算子は2つです。

文字列操作に利用できる演算子の一覧表

演算子演算例演算
+a + b文字列の結合
*a * n

文字列を\(n\)回繰り返し

演算子を使った文字列の結合

Pythonでは\(+\)演算子を使うことで文字列を結合することができます。複数の変数に文字列を代入し、それを\(+\)演算子で結合してから出力します。

link_url = 'http://test.com/a.html'

link_text = '〇〇へリンク'
x = '<a href="' + link_url + '">' + link_text + '</a>'
print(x)

出力結果

<a href="http://test.com/a.html">〇〇へリンク</a>

演算子を使った文字列の繰り返し

\(*\)演算子を使うことで同じ文字列を指定する数値の回数繰り返すことができます。こちらは文字列に対して数値を指定することに注意してください。数値は、ダブルクォーテーション【"】、または、シングルクォーテーション【'】で囲みません。指定に利用することができる数値は整数値のみです。

link_url = 'http://test.com/a.html'

link_text1 = '〇' * 3
link_text2 = 'へリンク'
link_text3 = link_text1 + link_text2
x = '<a href="' + link_url + '">' + link_text3 + '</a>'
print(x)

「link_text1 = '〇' * 3」で「〇を3回繰り返す」という指定になっています。

出力結果

<a href="http://test.com/a.html">〇〇〇へリンク</a>

演算子の複合利用

\(+\)と\(*\)の文字列演算子は同時に利用することもできます。同時に利用することで先程のコードはとてもシンプルになります。

link_url = 'http://test.com/a.html'

link_text = '〇' * 3 + 'へリンク'
x = '<a href="' + link_url + '">' + link_text + '</a>'
print(x)

出力結果

<a href="http://test.com/a.html">〇〇〇へリンク</a>

+=による文字列の追加

\(+\)演算子を\(=\)の前につけて利用することで文字列を後ろに追加しながら代入することができます。

x = ''

x += '<a href="'
x += 'http://test.com/a.html'
x += '">'
x += '〇' * 3
x += 'へリンク'
x += '</a>'
print(x)

出力結果

<a href="http://test.com/a.html">〇〇〇へリンク</a>
空文字列

1行目に指定している

x = ''

は、空文字列と言う概念です。str型で中身が空の変数を用意しているだけです。\(+=\)を使って文字列を次々と追加していく場合、最初に作っておくことが多いです。\(+=\)で追加するベースだと考えれば良いでしょう。

中身は空ですがシングルクォーテーション【'】を利用して代入していることでデータ型はきちんとstr型になっています。

x = ''

print(type(x))

出力結果

<class 'str'>

ちなみに、str型に「0」をかけると空文字列になります。「\(x\)を\(0\)回繰り返す」ので、値は0となり空文字列になりますがデータ型はそのまま残ります。使い勝手が良いので覚えておくと便利です。

x = 'テキスト'

y = x * 0
print(y)
print(type(y))

出力結果



<class 'str'>

このように演算子の使い方を駆使することで様々な文字列の作成方法を行うことができます。数をこなす事でだんだんと自分が記述するコードに合わせた利用方法が分かってきますので、まずは基本的な使い方だけをマスターしておきましょう。

文字列を部分的に取り出す方法

最後に文字列の簡易な取得方法を説明します。主な文字列取得方法には1文字だけを取得する方法と複数文字を取得する方法の2種類あります。

N文字目の文字の取得

1文字取得する場合は変数の後ろに角括弧記号【[] 】つけてその中に取得したい文字の順番(\(n\)番目)を指定します。1文字目の「吾」を取得したい場合下記のように記述したくなると思います。

x = '吾輩は猫である'

n = 1
print(x[n])

出力結果


しかし、実際の出力結果を確認すると2文字目の「輩」が取得されています。これはPythonのインデックスの付け方に影響するものでインデックス番号は0からカウントされています。そのため1文字目を取得したい場合は1を引いた0を指定する必要があります。

それを踏まえて下記のようにコードを修正することで1文字目の「吾」が取得されているのが確認できます。

x = '吾輩は猫である'

n = 1
print(x[n-1])

出力結果


N文字目から、M文字目の文字の取得

複数の文字列を取得したい場合は角括弧記号【 [] 】内で取得したい文字の開始(\(n\)番目)から終わり(\(m\)番目)未満を【:】で繋いで指定します。終わりが\(m\)番目未満になっていることに注意してください。未満ですので指定した数値の一つ前まで取得されます。

インデックス番号は0からカウントされているため\(m\)番目の文字列のインデックス番号も− 1する必要がありますが、取得条件が未満のため1つ大きな数値を指定する必要があります。そのため指定時には− 1が必要なくなります。

1文字目から3文字目までの「吾輩は」を取得したい場合は下記のようになります。

x = '吾輩は猫である'

n = 1
m = 3
print(x[n-1:m])

出力結果

吾輩は

今日のdot

基本的な文字列操作はプログラミングで頻繁に利用します。特に文字列演算子を使った文字列の結合等はよく利用しますのでしっかりとマスターしておきましょう。
link_url = 'http://test.com/a.html'

link_text = '〇' * 3 + 'へリンク'
x = '<a href="' + link_url + '">' + link_text + '</a>'
print(x)

出力結果

<a href="http://test.com/a.html">〇〇〇へリンク</a>

文字列操作に利用できる演算子の一覧表

演算子演算例演算
+a + b文字列の結合
*a * n

文字列を\(n\)回繰り返し