0

Python を使用して、次のスニペットから 34980 と 100329 を抽出するにはどうすればよいですか。

<tr id="product_34980" class="even">
<tr id="variant_100329" class="variantRow">
4

2 に答える 2

3

とを使用filterしてstr.isdigit、次のコードは各行から数字を抽出します。

>>> lines = '''<tr id="product_34980" class="even">
... <tr id="variant_100329" class="variantRow">
... '''
>>> [filter(str.isdigit, line) for line in lines.splitlines()]
['34980', '100329']

UPDATEを使用してlxml

import lxml.html

html_string = '''
<tr id="product_34980" class="even">
<tr id="variant_100329" class="variantRow">
'''

root = lxml.html.fromstring(html_string)
for tr in root.cssselect('tr.even, tr.variantRow'):
    print(tr.get('id')) # => product_34980
    print(tr.get('id').rsplit('_', 1)[-1]) # => 34980
于 2013-10-16T13:09:36.607 に答える
0

最も一般的な解決策ではありませんが、上記のスニペットでは機能します。

import re

html = """
    <tr id="product_34980" class="even">
    <tr id="variant_100329" class="variantRow">
"""

ids = re.findall(r'id="\w+_(\d+)"', html)
于 2013-10-16T14:10:27.603 に答える