こんにちは、Pythonエンジニア育成推進協会 顧問理事の寺田です。私は試験の問題策定とコミュニティ連携を行う立場です。
実践試験Tipsは、当協会のPython3エンジニア認定実践試験を受験される予定の方に向けて、何回かに分けてちょっとした情報をお伝えしていく目的で作成しています。
前回は主教材Chapter5 型ヒントについてお話しました。
今回は主教材Chapter6 テキスト処理についてお話したいと思います。
■学習のポイント:Chapter6 テキスト処理
Python3エンジニア認定実践試験は、主教材「Python実践レシピ」(技術評論社)の中から出題されます。
出題範囲については以下のページをご確認ください。
主教材Chapter6ではテキスト処理について解説しています。
Pythonにおいて、テキスト処理は重要な部分ですし、テキスト処理自体は奥が深いものではありますが、比較的難しいことはなく、試験でも難なく回答できると思います。
この章からの出題数は4問(10%)になりますので、出題数の多い章です。ぜひ取りこぼしのないよう、学習しておいてください。
■Pythonとテキスト処理
Pythonを使っているとテキスト処理が必要な場面が出てきます。Pythonはテキスト処理がとても得意な言語で、いろいろと便利なツールも揃っていますので、簡単にテキスト処理ができるというところも1つの特徴と言えるかと思います。
テキスト処理と言われると、正規表現という言葉が浮かぶかもしれません。ただ、もともとPythonでは必要がなければ正規表現を使わなくていいように、Pythonのみでテキスト処理をできるかということを考えるというのが一般的な考え方です。そのため、まずは正規表現のことは一旦横に置き、Pythonの標準でできるテキスト処理をまずは学ぶことが最初に必要なことになります。
例えば、最初の文字がAから始まるテキストを抽出したいというケースを考えてみます。
この場合、Pythonにある.startswith()メソッドという文字列を取り扱うメソッドを使います。このメソッドを利用すれば、簡単に指定の文字の検索ができます。ほかには、スライス記法を使用すれば対象の文字列の削除や置換ができます。
このように、Pythonは標準機能で、文字列の基本的な型の処理ができるようになっています。
これを念頭に置いた上で文字列リテラルを作ります。まずダブルクォーテーションまたはシングルクォーテーションで文字を囲うことで文字列を作り、その後、文字列型の様々なメソッドを覚え、使えるようになるということができれば、文字列処理の大体のことはできると考えていいかと思います。
文字列の操作は複雑なパターンでなければ文字列メソッドなどで大抵のことはできます。
例えば、数字が連続する文字列があったときに、すべての数字が数値のみで出来ているかの判定はisdigit() メソッドを利用すれば可能です。もし、数字以外がなければint型に変換させることもできます。また、文字列の置換もreplace()メソッドを利用すれば可能です。
このように、Pythonには便利なメソッドがたくさん存在していますので、それらを使いこなすということが重要なポイントになってきます。
■押さえておきたいポイント
Chapter6の各節で押さえておいてほしいポイントについて簡単に書いておきます。
- 1節
基礎試験で取り扱ったような基本的な部分のおさらいです。また、この節の最後ではstringモジュールを取り上げ、どういったときに利用されるのかということが紹介されています。
例えば、ASCII文字列(半角)の内、英小文字のa-zの26個が欲しい場合などにstringモジュールは利用されます。利用することはほとんどないかもしれませんが、わざわざabcdと打たずとも文字列を手に入れることができます。
- 2節
フォーマット文字列として、文字列のテンプレート化について説明されています。
例えば、「●●さん、こんにちは」という基本のテンプレートに対して、●●の部分に文字列を埋め込むための方法が説明されています。
Pythonは歴史的にC言語由来の「%s」という書き方が長らく使われてきましたが、その後、「.format」の方式が推奨されるようになりました。最近ではf-stringが使われるのが基本になっています。
そのため、この節では旧来の「%s」や「.format」の方式も一応書かれてはいますが、f-stringの書き方を中心に紹介されています。f-stringはすでに使っている人は多いため、復習程度で良いかと思います。
この中では、f-stringは日付オブジェクトをフォーマット文字列に渡せば変換することもできるということは覚えておいた方が良いでしょう。
- 3節
正規表現が取り上げられています。Pythonでは正規表現を積極的に使わないというのが共通の認識です。
とはいえ、正規表現という強力な文字列の検索・置換ができる仕組みが言語として入っていないというのは困りますので、reという標準ライブラリで提供されています。
正規表現は専用の書籍1冊の本があるくらい学ぶのが難しい1つの言語だと思っています。なので、ここではPythonにおいての基本的な正規表現の使い方が1つの課題になります。そこでここではPython特有の正規表現オブジェクトを一旦作ってからメソッドを呼び出すというような流れが書かれています。
この部分だけで正規表現の細かいところを理解することはできませんが、Pythonにおける正規表現の使い方をここでは覚えてほしいと考えています。またメタ文字列などの一般的な正規表現は少しでも理解しておくといいと思います。
正規表現を苦手とする人は比較的多く、Pythonを使う人たちの中にも苦手と言っている人がいます。そうした苦手意識を多少なりとも緩和して、試験に挑んでほしいところです。とはいえ、試験においては正規表現のマニアックなものは覚えきる必要はありません。
- 4節
Unicodeデータベースへのアクセスが取り上げられています。3ページほどの短い節ではありますが、面白い機能だとは思いますので、ぜひ少しでも使ってみてほしいところです。
特に私が良いなと思っているのは、半角カタカナや数値の全角・半角が混ざっているようなデータが来たときにどちらかに統一する方法です。文字列としてとてもきれいな形に正規化することができますので、使い方を覚えておくと先々で便利なツールとして利用できます。
■まとめ:テキスト処理
Pythonはテキスト処理がとても得意な言語ですし、テキスト処理が適切に行えることは重要です。
Pythonには便利なメソッドやツールがたくさんありますので、それらを使いこなすことができるよう、それぞれのポイントを押さえておくようにしましょう。
