Well you have a mistake in your one liner you should compare it to your newly created “item” variable and not the entire list.
Here is an example
sizes = [6, 5, 10, 30]
parsed_sizes = [item for item in sizes if 1 <= item <= 20]
print(parsed_sizes)
Output:
[6, 5, 10]
Im scraping data and parsing it through soup and then trying to make a float comparison
Heres my code:
with requests.Session() as s:
r = s.get(url[pid], headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
sizes = soup.findAll(True,{'class':'product__sizes-size-1'})
uksizes = [f"UK {allsize.text}" for allsize in sizes]
parsed_sizes = [item for item in sizes if float(sizes) >=1 and float(sizes) <=20]
Heres my html:
[<span class="product__sizes-size-1">6</span>, <span class="product__sizes-size-1">6.5</span>, <span class="product__sizes-size-1">7</span>, <span class="product__sizes-size-1">7.5</span>, <span class="product__sizes-size-1">8</span>, <span class="product__sizes-size-1">8.5</span>, <span class="product__sizes-size-1">9</span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>, <span class="product__sizes-size-1"></span>]
Ive tried using str(sizes) so that they can be turned into a float but it still didnt work.