Ошибка ValueError: could not convert string to float: '77,59'
Как исправить? Ошибка возникает когда я хочу превратить элемент из списка в число.
@bot.message_handler(commands=['convert'])
def cmd_convert(message):
response = requests.get('https://yandex.ru/')
page = response.text
soup = BeautifulSoup(page, 'html.parser')
currency = []
for figures in soup.select('span.inline-stocks__value_inner'):
currency.append(figures.text)
try:
class Converter:
def __init__(self):
self.usd = currency[0]
self.eur = currency[1]
self.rub = sum
def dollar(self):
return int(self.rub) / int(float(self.usd))
def euro(self):
return int(self.rub) / int(float(self.eur))
def extract_arg(arg):
return arg.split()[1:]
answer = extract_arg(message.text)
sum = int(answer[0])
converter = Converter()
sum1 = round(converter.dollar(), 2)
sum2 = round(converter.euro(), 2)
bot.send_message(message.chat.id, f'USD: {sum1}\nEUR: {sum2}')
except IndexError:
bot.send_message(message.chat.id, 'Введите сумму после команды')
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Ну, можно заменить , на . и будет работать. Так вот работает:
float('77,59'.replace(',','.'))
Ну, то есть у вас будет видимо:
int(float(self.usd.replace(',','.')))
Автор решения: Victor VosMottor
→ Ссылка
Надо заменить , на . т.к. питон использует . для float:
@bot.message_handler(commands=['convert'])
def cmd_convert(message):
response = requests.get('https://yandex.ru/')
page = response.text
soup = BeautifulSoup(page, 'html.parser')
currency = []
for figures in soup.select('span.inline-stocks__value_inner'):
currency.append(figures.text)
try:
class Converter:
def __init__(self):
self.usd = currency[0]
self.eur = currency[1]
self.rub = sum
def dollar(self):
return int(self.rub) / int(float(self.usd.replace(',', '.')))
def euro(self):
return int(self.rub) / int(float(self.eur.replace(',', '.')))
def extract_arg(arg):
return arg.split()[1:]
answer = extract_arg(message.text)
sum = int(answer[0])
converter = Converter()
sum1 = round(converter.dollar(), 2)
sum2 = round(converter.euro(), 2)
bot.send_message(message.chat.id, f'USD: {sum1}\nEUR: {sum2}')
except IndexError:
bot.send_message(message.chat.id, 'Введите сумму после команды')