ノック52:本文を抽出して1つにまとめよう
hashire_merosu.txtの文章をsplitを使用して分割します。
split()の引数を省略すると空白文字で分割します。
分割したそれぞれの行を空白文字と連結しています。
'間に挿入する文字列'.join([連結したい文字列のリスト])
次に文字を正規化します。数値は全て半角、カナは全て全角にします。
正規化には以下の4つがあります。
「NFD (Normalization Form Canonical Decomposition)」
「NFC (Normalization Form Canonical Composition)」
「NFKD (Normalization Form Compatibility Decomposition)」
「NFKC (Normalization Form Compatibility Composition)」
- NFDとNFCは正準等価性 (Canonical Equivalent) によって分解. 同一文字とみなす条件がより厳しい.
- NFKDとNFKCは互換等価性 (Compatibility Equivalent) によって分解. 同一文字とみなす条件がより緩い.
- NFDの後, 再度合成するのがNFC
- NFKDの後, 再度合成するのがNFKC
正規化した文章のパタンマッチングをおこないます。
re.compile()の引数がマッチしてほしいパターン内容になります。
#地から1字上げ] という文字列は小説の最初と最後にあるため、小説の本文を抜き出す正規表現となっています。
r'^.+(AAA.+BBB).+$' で、AAAから始まってBBBで終わる文章にマッチングするパターンとなります。
マッチングの範囲をもっと短く以下のように書くと「二人の様を、まじまじと見つめていたが、やがて静」
までがマッチング結果として出力されます。
最後に以下の部分は必要ないのでreplaceで空白に置き換えて削除します。
[#地から1字上げ]-------------------------------------------------------
・・・[#地から1字上げ]