2016-04-01 2 views
0

Я просто хочу извлечь данные о цене без $. В файле есть несколько цен, и мне нужны только те, которые приходят после class = "price price-label">, а не те, которые после класса = "забастовка">Re в проблеме фильтра python

Я вложил полный код - я вытягивая информационную форму file.txt. Мой желаемый результат должен иметь имя и цену. Раньше я не использовал Beautiful Soup.

data-default-alt="Ford Truck">  </h3>  </a>   </div>  <div class="tileInfo">    <div class="swatchesBox--empty"></div>              <div class="promo-msg-text">   <span class="calloutMsg-promo-msg-text"></span>   </div>        <div class="pricecontainer" data-pricetype="Stand Alone">    <p id="price_206019013" class="price price-label ">     $1,000.00    </p> 

Мой код

with open("targetbubbles.txt") as str: 
    st = str.read() 
    #print st 

import re 

#brand=re.search('data-default-title=\"(.*?)" ',st) 

#cost=re.search('\$(\d+,?\d*\.\d+)</p>',st) 
+0

Я надеюсь, что вы используете какой-то XML парсер для этого? Пожалуйста, покажите свой код. – idjaw

ответ

1

beautifulsoup является полезным модуль для такого рода дерьма

>>> import bs4 
>>> s = '''  <p id="price_206019013" class="price price-label ">     $2.84    </p>            <p class="regularprice-label">  Reg.  <span class="screen-reader-only"> price</span>  <span class="strike">  $2.99  </span>  </p>     <div class="eyeBrow sale-msg">  <span ''' 
>>> soup = bs4.BeautifulSoup(s, 'lxml') 
>>> soup.find_all('p', class_='price price-label ') 
[<p class="price price-label " id="price_206019013">     $2.84    </p>] 
>>> [result] = soup.find_all('p', class_='price price-label ') 
>>> result.text.strip(' $') 
u'2.84' 
+0

Спасибо! Я сделал некоторые изменения, чтобы дать больше информации, поскольку я не знаком с Beautiful Soup. Я, несомненно, сделаю это выстрелом после этого. – turtle02