3

BeautifulSoup、特にreモジュールに「問題」があります。問題は次のとおりです。

import re

from bs4 import BeautifulSoup

string = """
<div id="my_id">
    <ul>
        <li>something</li>
        <li class="color12">something</li>
        <li class="color45">something else</li>
    </ul>
</div>
"""
soup = BeautifulSoup(string)
li = soup.find_all('li', {'class': re.compile('color(\d+)')} )
for ele in li:
    print ele['class'] # will print colorXXXX but i would like to know how to get only this XXXX

しかし、色の後に数字だけを抽出したいと思います。それは可能ですか、それとも次のようなものを使用する義務がありますか:

match = re.search(r'color(\d+)', str(ele['class']))
if match:
    print match.group(1)

助けてくれてありがとう:)

4

1 に答える 1

3

正規表現を再適用する必要があります。変数に保存して再利用するだけです:

colorpattern = re.compile(r'color(\d+)')

li = soup.find_all('li', {'class': colorpattern} )
for ele in li:
    print colorpattern.search(ele['class']).group(1)
于 2012-11-15T15:34:29.400 に答える