You need to get the tag text, convert to a number and then it should work.
For example:
from bs4 import BeautifulSoup
sizes = """[<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>]
"""
soup = BeautifulSoup(sizes, "html.parser").find_all(True, {'class': 'product__sizes-size-1'}, text=True)
parsed_sizes = [
item.getText(strip=True) for item in soup
if 1 <= float(item.getText(strip=True)) <= 20
]
print(parsed_sizes)
Output:
['6', '6.5', '7', '7.5', '8', '8.5', '9']