質問: re.match('[^\d]*(\d+).*$', 'レビュー(335件)') print(m.groups()) こうやって記載すると(‘335’,)ここまでは出るのですが、 なぜ()がついてきてしまうのか、またこのコードをどうやって上のコードに組み込むのかがわからず悪戦苦闘しております。 **[依頼/質問]** 1、()内の数値の抜き出し方を教えて頂けないでしょうか。(ページ内全て、コンマ抜き) 2、上記コードを実行時に改行スペースが多くできてしまうのですが、すっきりできないでしょうか(改行部分をなくしたいです) 皆様お忙し中すいません。。 上記教えて頂けますと幸いです。 よろしくお願い致します。
回答: ``` for review in bsObj.findAll("div",{"class":"rnkRanking_starBox"}): link_tag = review.find('a') soup_string = str(link_tag) review_count = soup_string[soup_string.find("(")+1:soup_string.find("件)")] review_count = review_count.replace(',', '') print (review_count) ``` 自分ならこんな感じにします。 ``` print(review.text.replace(',', '')) ``` 上記コードで改行が多くなるのはreview.textには空文字を含むdiv要素も含まれているからですね。 あとbsObjから返ってくるオブジェクトはbs4.element.Tagクラスなので正規表現などで扱いたい場合str()で文字列へ変換してやる必要があります。