【プログラミング】3.7 文字列型

プログラミング

私たちが日常的に使っている言葉や文章ですが、これをプログラムで扱おうとすると文字列という形式になります。今回は、この文字列について見ていきましょう。

文字列とは
文字列とはその言葉のとおり文字が順番に並んでいるもので、pythonのマニュアルではテキストシーケンスとされています。これまでも文字列は何回か出てきました。シングルクォーテーションやダブルクォーテーションで囲まれていましたね。そしてそれらはprint()を使って表示することができました。
a="Hello, World!"
b='Good Morning'
c="こんにちは"
print(a)
print(b)
print(c)
いろいろな操作
文字列はプログラムのいろいろな場面で使われます。
定数として何の変更もせずに使うこともありますが、文字列に対していろいろな操作を行って加工していることも多いです。また、加工ではなく参照するような操作、例えば文字列の長さを調べるなどもあります。
文字列に対する操作や演算はとても数多くの種類がありますが、ここではその一部を紹介します。
なお、説明の都合により一部正確ではない部分などもあります。また、記載したもの以外の機能を参照するためにも、以下の公式サイトもあわせてご覧ください。
https://docs.python.org/ja/3/library/stdtypes.html#text-sequence-type-str
【文字列の長さ】

文字列の長さ、つまり文字数はlen()で調べることができます。もちろん、漢字を含む文字列でも文字数をちゃんと返してくれます。

【始めと終わりの確認】

文字列が指定した文字列で始まっているか、あるいは終わっているかを調べます。始まりはstartswith()で、終わりはendswith()を使います。
例えば、以下の例ではファイル名を示す文字列の末尾が”.txt”であるかを判定しています。

【検索】
文字列において、指定した文字列が含まれている位置を求めます。ここでの位置とは、先頭から何文字目かを示すインデックスで、0から始まる整数値です。
なお、指定した文字列が含まれているかどうかだけを知りたい場合(含まれている位置までは知らなくても良い)には、in を使ったほうが効率的です。
また、もっと複雑な検索条件で文字列を探す場合には、正規表現という手法を使うと便利です。(説明が長くなってしまうのでいずれまた…)
【先頭や末尾の空白の除去】
文字列を扱う場合、入力された文字列の先頭や末尾に空白が含まれていることがありますが、場合によってはこれらの空白文字が余計である場合があります。こんな時に、lstrip() や rstrip() を使うと、先頭や末尾の空白を取り除いた文字列を返してくれます。
なお、先頭も末尾も同時に処理したい場合には、strip()を使います。
【置換】
文字列のなかに指定した文字列が含まれていた場合、それを置き換える操作が置換であり、replace()で行います。指定した文字列が複数回存在していた場合、指定した個数だけ置き換えることも、全てを置き換えることも出来ます。
【指定した文字による分割】
対象の文字列を、指定した区切り文字(こうした文字のことをデリミタと呼びます)で区切る場合にはsplit()を使います。split()にはsepという引数があり、これにデリミタを指定します。
例えばデリミタにカンマ(,)を指定した場合、以下のようになります。
一方、デリミタに何もしていない場合には、空白で区切った結果が返されます。(実は区切り文字が連続していた場合などに、ちょっとした動作の違いがあります。)
なお、区切られた文字列はリストという形式で返されますが、これについては別の回で取り扱います。
【連結】
複数の文字列を連結する場合には、二項演算子の+を使うことが出来ます。数値の足し算と同じような感覚で、文字列を足すことが出来るのです。
【書式化】
文字列の中に指定した変数の値を入れ込むことを書式化といい、format()を使います。これまでも変数をprint()で表示することはしてきましたが、format()を使うことで、より柔軟な方法で表示させることが出来ます。例えば数値であれば、表示する精度や桁数などを指定出来ます。

これは同じ数値である123を、いろいろな方法で表示させた例です。

1つめは、特段の指定をせずにそのまま表示させました。
2つめは、10進数の整数(d)であることを明示的に指定しました。
3つめは、浮動小数点数(f)として表示させました。このため、小数点以下も表示されています。
4つめは、浮動小数点数を指定した上で、小数点以下の桁数を2桁まで表示(.2)させています。

数値を出力する場合によく使う書式は以下のとおりです。なお、[]は省略できることを示すので、{}とだけ書くことも出来ます。

{[桁数][,][.小数点以下の桁数][形式]}
  • [桁数]は、数値を表示する桁数を指定します。実際に必要な桁数よりも多い桁数が指定された場合、先頭部分が空白で埋められます。ただし桁数の頭に0をつけた場合には、ゼロで埋められます。
  •  [,]は、整数を表示する場合に3桁ごとにカンマ区切りをする場合に指定します。浮動小数点数には指定できません。
  • [.小数点以下の桁数]は、指定した数値のうち小数点以下の桁数を指定します。表示する桁数にあわせてゼロがつけられたり、丸められます。
  • [形式]は、数値をどのような形式で表示するを示すもので、以下の表のような種類があります。形式によっては、指定できる数値が整数型に限られるものもあります。

形式

対象とする数値型

内容

b

整数

2進数で表示します。2進数では、数値が01の列で表現されます。

c

整数

指定した数値が文字コードであるような文字を表示します。例えば65は大文字のAの文字コードなので、Aと表示されます。

d

整数

10進数で表示します。

o

整数

8進数で表示します。8進数では、数値が0から7までの列で表現されます。

x

整数

16進数で表示します。16進数では、数値が0から9までの数字とaからfまでのアルファベットで表現されます。

f

整数、浮動小数点数

小数点を伴う実数形式で表示します。

e

整数、浮動小数点数

仮数部と指数部をからなる指数形式で表示します。例えば12.345であれば、1.2345e+01と表現され、これは1.2345×101を意味します。

%

整数、浮動小数点数

百分率(パーセンテージ)で表示します。1.00100と表現されます。

いくつかの例を示します。

ここまでに示したものは一例ですが、表示の指定の方法はとてもたくさんあります。詳細は以下をご確認ください。

string --- Common string operations
ソースコード: Lib/string.py 文字列定数: このモジュールで定義されている定数は以下の通りです: カスタムの文字列書式化: 組み込みの文字列 (string) クラスには、 PEP 3101 で記述されている format() メソッドによって複雑な変数置換と値のフォーマットを行う機能があります。 str...
まとめ
  •  文字列はダブルクォーテーション(”)やシングルクォーテーション(’)で括ったものとして定義出来る。
  •  文字列にはいろいろな操作が可能である。
  • 変数を加工して文字列化するための処理としてformat()があり、いろいろな書式を指定することが出来る。

コメント

タイトルとURLをコピーしました