Solution 1 :

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]

Problem :

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.

By