6章「テキストの処理」の対策ポイントと例題
6章「テキストの処理」からは本番40問中4問が出ます。文字列メソッドと正規表現(re モジュール)が中心で、出題数は3番目に多い章です。
- re
- str メソッド
- difflib
- textwrap
- unicodedata
- string.Template
この章の出題数と位置づけ
6章「テキストの処理」からは本番40問のうち4問が出題されます。 全体に占める割合は10.0%で、15章中3番目の出題数です。 合格に必要なのは28問正解(12問まで不正解可)なので、 この章の4問をどこまで取りに行くかは、他の章との兼ね合いで決めるのが現実的です。
対策のポイント
- re.match は文字列の先頭のみ、re.search は途中も探す、という違いが最頻出です。
- re.findall と re.finditer の戻り値の型、グループがあるときに findall が何を返すかは間違えやすい所です。
- split / rsplit / partition、strip / lstrip / rstrip の引数の意味(削る文字の集合であって、文字列ではない)を確認します。
- textwrap による折り返し、unicodedata による正規化(NFKC など)も出題範囲です。
この章の例題(3問)
当サイトで実際に出題している問題から3問を、正解と解説つきで掲載します。 すべて自作のオリジナル問題で、実際の試験問題ではありません。
例題1. 実行結果として正しいものを選べ。
print(" a b ".split())
- 正解['a', 'b']
- ['', '', 'a', '', 'b', '', '']
- [' a b ']
- ['a ', ' b']
解説: 引数なしの split() は連続する空白をひとまとめの区切りとして扱い、先頭と末尾の空白を無視する。split(' ') と明示すると空文字列を含む結果になり、挙動が変わる。
例題2. 実行結果として正しいものを選べ。
import re
print(re.match(r"b", "abc"))
- 正解None
- マッチオブジェクトが表示される
- 'b'
- re.error
解説: re.match は文字列の先頭からしか照合しない。途中の位置を探すのは re.search。fullmatch は全体一致。
例題3. 実行結果として正しいものを選べ。
print("-".join([1, 2, 3]))
- 正解TypeError
- '1-2-3'
- '123'
- [1, -2, -3]
解説: join は文字列のイテラブルしか受け付けない。数値を連結するなら "-".join(map(str, [1, 2, 3])) のように変換が必要。
この章は当サイトに全9問を収録しています。残りはドリルの「章別に解く」から解けます。