Pythonの文字列/ファイル操作/組み込み関数(もしくは落ち穂拾い)特集:Visual Studioで始めるPythonプログラミング(1/3 ページ)

Pythonでプログラミングをする上で必須の知識といえる文字列やファイルの扱い方の基本、便利に使える組み込み関数を本稿では紹介する。

» 2017年01月27日 05時00分 公開
[かわさきしんじInsider.NET編集部]
「特集:Visual Studioで始めるPythonプログラミング」のインデックス

連載目次

 今回は本特集でこれまでに取り上げてこなかったが、覚えておくべき事項としてPythonの文字列の基本、ファイル操作の基本、幾つかの組み込み関数の使い方を見ていこう。

文字列

 本特集では整数、浮動小数点数など、Pythonの基本データ型については明確に取り上げてこなかった(読者の多くはこうしたデータ型の概念については既にご存じであろうという考えからだ)。文字列もそうしたデータ型の1つではあるが、Python独自の文字列の使い方もあるので、以下ではこれについて見ていくことにしよう。なお、Pythonの組み込み型については「TensorFlowやChainerに興味があるけど、Python未経験の技術者が最低限知っておいた方がいい基礎文法まとめ (2/6)」にまとめてあるので、そちらを参照してほしい。

 まず簡単に文字列についてまとめておこう。

  • 文字列はシングルクオート/ダブルクオート、あるいはこれらを3つ連続したもので囲む
  • Pythonでは文字列はUnicode文字が連続したもの(シーケンス)として扱われる
  • 関数/クラス/モジュールでは「docstring」と呼ばれる特別な使い方がされる

文字列の基本

 以下に簡単な例を示す。

>>> s = 'It\'s Python that is "most suitable script language" for Visual Studio'
>>> s = "It's Python that is \"most suitable script language\" for Visual Studio"


ダブルクオートとシングルクオートで囲んだ文字列

 見ての通り、シングルクオート内ではダブルクオートをエスケープせずに使用できるが、シングルクオートを使うには「\」でエスケープする必要がある。逆も同様だ。また、「\t」でタブ文字などの一般的なエスケープシーケンスも利用可能だ。また、8進数値による文字指定(「\xxx」。「xxx」は8進数値)、16進数値による文字指定(「\x」)、Unicodeのコードポイントによる指定(「\u」「\U」)、Unicode名による指定(「\N{Unicode名}」)なども可能だ。これらについてはPythonのドキュメント「2.4.1. 文字列およびバイト列リテラル」などを参照してほしい。

 なお、エスケープ文字(\)をエスケープなしで文字列内に記述するには文字列を囲む最初のシングルクオート/ダブルクオートの前に「r」を付加する。

path = r"c:\project\python"
path
print(path)


「raw string」と呼ばれる文字列の記述方法

 このような文字列を「raw string」と呼ぶ。上のコードを対話環境で実行すると、次のようになる。

>>> path = r"c:\project\python"
>>> path
'c:\\project\\python'
>>> print(path)
c:\project\python


r""形式の文字列を対話環境で評価、組み込み関数printで表示した結果

 raw stringでは、「\n」のような文字が含まれていても、それはエスケープされた文字ではなく「\」と「n」という文字が連続しているだけであることに注意しよう。以下に対話環境での実行例を示す。

>>> s = 'f\tbar'
>>> print(s)  # 「\t」はタブ文字を表す
f       bar
>>> s = r'f\tbar'
>>> print(s)  # 「\t」は「\」と「t」という文字の並び
f\tbar


raw stringを扱う上での注意点

 文字列はシーケンスなので、次のようにforループで1文字ずつその要素を取り出せる。

s = "Python"
for c in s:
  print(c)


文字列に対して反復処理を行う

 実行結果がどうなるかはお分かりだろうが、一応示しておこう。

>>> s = "Python"
>>> for c in s:
...   print(c)
...
P
y
t
h
o
n


実行結果

 トリプルクオート(三重引用符)は改行を含む文字列を記述する際に利用する。以下に例を示す。トリプルクオートでは文字列は「'''」または「"""」で囲まれるので、途中に単独の「'」や「"」を自由に含めることができる。また、複数行にわたる文字列を自由に記述できることから、次に見るdocstringなどで使われることが多い。

s = """It's Python that is
"most suitable script language" for Visual Studio"""
print(s)


トリプルクオート

 文字列と文字列を空白文字で区切って記述した場合、それらは1つの文字列となる。

s = "insider" ".net"
print(s)  # 出力結果: insider.net


空白文字で区切られた文字列リテラルは単一の文字列リテラルになる

 なお、文字列を操作するメソッドや数値やリストを文字列化する組み込み関数などについては「TensorFlowやChainerに興味があるけど、Python未経験の技術者が最低限知っておいた方がいい基礎文法まとめ (2/6)」を参照のこと。

docstring

 Pythonではdocstring(ドキュメンテーション文字列)と呼ばれる文字列の使い方をすることで、関数/クラス/モジュールにドキュメントを付加することがとても簡単に行えるようになっている。docstringとは簡単に言ってしまえば「関数/クラス/モジュール定義の先頭の式がリテラル文字列の場合、それがそのドキュメントとして扱われる」というものだ。以下に例を示す。

def hello():
  '''Print "Hello world"'''
  print('Hello world')

hello()
help(hello)
hello.__doc__


docstring付きの関数hello

 関数helloの先頭の式がリテラル文字列となっているので、これはdocstringとして扱われる。docstringは関数helloの属性「__doc__」として保存され、外部から参照が可能だ。例えば、組み込み関数helpに関数helloを渡すと、これが参照され、ヘルプドキュメントとして表示される。以下に上のコードの実行例を示す。

>>> def hello():
...   '''Print "Hello world"'''
...   print('Hello world')
...
>>> hello()
Hello world
>>> help(hello)
Help on function hello in module __main__:

hello()
    Print "Hello world"  # docstringがヘルプドキュメントとして表示されている

>>> hello.__doc__  # docstringはそれを記述した関数などの属性「__doc__」に保存される
'Print "Hello world"'


docstringの利用例

 関数やクラス、モジュールの先頭にはコメントなどの形で、それらが何のためのものかなどを記述することがよくあるが、Pythonではこれをdocstringという形式で言語機構内に含めている。そして、docstringを使うことで、これが自動的にヘルプドキュメントとして使えたり、プログラムの他の部分から参照できたりするようになるので、活用するようにしよう。なお、docstringをどう書くべきかについてはPythonのドキュメント「4.7.6. ドキュメンテーション文字列」を参照してほしい。

       1|2|3 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。