我正在阅读python / BS4中的一些产品页面,并在一行代码中找到一个有趣的变种,即物品的价格。
有时HTML是:
<span class="currency">$<span id="product_price">0.00</span></span>
其他时候会是:
<span class="currency">$17.95</span></b>
使用price = soup.find('span', {'class' : 'currency'})
我可以隔离范围,但是当我尝试获取文本时,使用
priceStr = price.findAll(text=re.compile(r''))
然后使用
将其写入输出文件divpage.write('Price = ' + str(priceStr) + '\n')
我得到了(第一个例子):
Price = [u'$', u'0.00']
我的问题是,有没有办法只读价格,没有'$',如何将编码从“u'0.00”翻译为“0.00”?
我知道我可以使用Python find&amp; amp;替换功能,但我想尽可能坚持BSS4,而不必写一个表格或其他形式的支票......
答案 0 :(得分:4)
我会使用get_text()而不是find_all()
price_str = price.get_text() # $17.95
然后你可以使用lstrip来摆脱美元符号
price_str = price_str.lstrip('$') # 17.95
你已经完成了!
答案 1 :(得分:0)
在这里使用Regex也可以在这里提供帮助,保留您需要的字符并删除其他所有字符。
if price_str is not None :
price = re.sub("[^0123456789.]","",price_str.get_text())