単二電池


 :
  </script>
 </div>
 <!-- 表示エリア -->
 <div class="row pt-4 pe-2 ps-lg-3 pb-lg-4 kashi" id="kashi-box">
  <div>
 :
  </div>
 </div>
 <!-- /表示エリア -->

というファイルがあって、その中の『表示エリア』
の間を抜き出したいのですが、pythonにて以下の
コードを書いても動きません。

import codecs

res = open('kekka.txt', 'r', encoding='UTF-8')
name = re.findall('<!-- 表示エリア -->.+?<!-- /表示エリア -->', res)
name2 = name[0]

どこが悪いのでしょうか…

A 回答 (2件)

オープンの後に、ファイル全体を読み込む必要があります。


読み込んだファイル全体の内容に対して、マッチングを行いますが、
改行もマッチするようにしておく必要があります。
.は任意の1文字ですが、通常は改行文字は含まれません。
re.DOTALLを指定すると、改行文字も含まれるようになります。

https://ideone.com/3CILMc
へアップしました。
    • good
    • 2
この回答へのお礼

ソースコードありがとうございます。
バッチリですっ♪

お礼日時:2025/02/23 20:21

openの返値はファイルハンドルの類いで文字列ではないので、質問の書き方だと正規表現マッチングへの入力が行ごとに分割処理されてマッチしない可能性が高い。

明示的に全文読み込んで正規表現への入力をファイル内容全体の文字列にして試してみる。
それでも質問の正規表現が複数行にマッチできるかは未確認だけど。
    • good
    • 0
この回答へのお礼

ありがとうございます。
openの後にread付けてみまして
全体を読み込むようにしました。

お礼日時:2025/02/23 20:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!