-1

この投稿の下部にある if ステートメントを「より厳密」にして、誤って間違ったデータを返さないようにするための助けを探しています。

印刷するdetails

<li class="">
<span class="prefix">Student Discount</span>
                £2922.70                </li>
<li class="">
<span class="prefix">Student DiscountX</span>
                5499.99                </li>

印刷詳細

<li class="">
<span class="prefix">Student Discount</span>
                £2922.70                </li>

Unicode の出力 (詳細)

<li class="">
<span class="prefix">Student Discount</span>
                £2922.70                </li>

BeautifulSoup コード スニピット

details = details_section.findAll('li', {"class":"full"})
for detail in details:
    if detail.find(text=re.compile("Student Discount")):
        SD = detail.get_text().replace("Student Discount", "").strip().replace(u"£", "POUNDSIGNHERE")
        SD = "Student Discount {}".format(detail.get_text().replace("Student Discount", "").strip().replace(u"£", "POUNDSIGNHERE"))
        if not "Student Discount POUNDSIGNHERE" in result_SF:
            SD = "Student Discount POUNDSIGNHERE{}".format(detail.get_text().replace("Student Discount", "").strip().replace(u"£", "POUNDSIGNHERE"))  
        print SD

出力

SF POUNDSIGNHERE2922.70
SF POUNDSIGNHERE5499.99

ご覧のとおり、各詳細にスペース/タブが多すぎる問題を回避し、ポンド記号を に置き換えました。POUNDSIGNHERE後で必要になったときにポンドに戻すだけです。シンボル。

変更のヘルプを探して投稿しています:
if detail.find(text=re.compile("Student Discount")):
次のようなものに:
if detail.find(text=re.compile('<span class="prefix">Student Discount</span>')):
または:
if detail.find(text=re.compile('>Student Discount<')):

if ステートメントをより厳密にして、次のような行をピックアップできないようにしたいと考えています。

<li class="">
<span class="prefix">Student Discount Old</span>
                £2922.70                </li>

アイデア、提案、または考えをいただければ幸いです。

4

1 に答える 1