進捗

4/18 7:30~8:30 12:30~14:45 p.374~p.375

このページを見て疑問が湧いた。raw文字列との兼ね合いを考えてバックスラッシュをつけたパターン文字列にraw文字列のrを付けると、バックスラッシュが二重になり、エスケープシーケンスではなく、そのまま文字として認識されるのでは無いかと思った。
調べた結果、杞憂に終わった。こういう書き方は公式ドキュメントにも書いてある。試しにドットをそのままの文字として認識させようとした場合にr"\."と書いた結果、狙った通りに認識された。もしかするとこの\\.から\.という文字が認識されるかもしれないと思った。そのようには動かなかった。
rを使わないで正規表現を書くことはシンプルだがバックスラッシュがどの文字と反応して特殊文字になるのかわからない。rを使ったからといって二重になった結果、意図したものとは違うことになるのでは無いかと考える必要はない。

webから通信したデータのレスポンスはpythonではutf-8エンコードされたbyte型。str型にするにはutf-8を指定してエンコードする。そのbyteからstrに使うメソッドはdecode()を使う。

p.375のコードではうまく作動しない。スペースもドットで表せる。検索する時、patternにタグを書くなら<a href>と省かずに書くと作動した。

findallで調べる時にpatternの中で一部分に()を使うと()でグループ化された箇所だけがマッチして返ってくる。。()を使わないとpattern全体でマッチした文字を返す。

groups()を使うとpatternの中で()でくくったグループのマッチオブジェクトが全て返ってくる。group()で引数なしだとpatternの中で()でくくってない正規表現もマッチした箇所をマッチオブジェクトとして返す。