2016-01-10 1 views
1

У меня есть скрипт python, который извлекает данные с HTML-страницы. В HTML есть таблица с плавающей запятой. Когда я делаю findAll и оператор присваивания, он присваивает его переменной типа unicode. Но мне нужна переменная типа float. Я думал, что я мог бы просто сделать float() преобразование, но это бросает ошибку:Python unicode to float error

File "percentages.py", line 52, in <module> 
    top_score = float(row.findAll('td')[2].text.strip()) 
ValueError: invalid literal for float(): 62.4% 

фрагмент кода выглядит следующим образом:

for link in stat_links: 
    r = requests.get(link) 
    soup = BeautifulSoup(r.text, "html.parser") 
    table = soup.find('table', class_="tr-table datatable scrollable") 
    team_rows = table.findAll('tr') 
    team_rows = team_rows[1:] 
    for row in team_rows: 
     if row.findAll('td')[0].text.strip() == '1': 
      top_score = float(row.findAll('td')[2].text.strip()) 
     if row.findAll('td')[0].text.strip() == '351': 
      lowest_score = float(row.findAll('td')[2].text.strip()) 

for row in team_rows: 
    if row.findAll('td')[1].text.strip() == sys.argv[1]: 
     temp = float(row.findAll('td')[2].text.strip()) 
     if link == "https://www.teamrankings.com/ncaa-basketball/stat/average-scoring-margin": 
      top_score = top_score + abs(lowest_score) 
      temp = temp + abs(lowest_score) 
      lowest_score = 0 
     temp = (temp - lowest_score)/(top_score - lowest_score) 
     team_one = team_one + temp 

ответ

1

Вы можете просто заменить % знак с пустой строкой:

top_score = float(row.findAll('td')[2].text.strip().replace("%", "")) 
+0

безупречный! Спасибо! –