Я получаю ValueError: не удалось преобразовать строку в число с плавающей запятой: '8,900'

Я пытаюсь разобрать строку, содержащую число, и когда я пытаюсь преобразовать ее в число с плавающей запятой, возникает ошибка:

ValueError: не удалось преобразовать строку в число с плавающей запятой: '8,900'

Мой код:

soup=BeautifulSoup(content,"html.parser")
element=soup.find("div",{"class":"_1vC4OE _3qQ9m1"})
price=element.text
price_without_symbol=price[1:]
print(float(price_without_symbol));

Вывод:

"C: \ Users \ SHIVAM TYAGI \ PycharmProjects \ price-of- Chair1 \ venv \ Scripts \ python.exe" "C: / Users / SHIVAM TYAGI / PycharmProjects / price-of-chair1 / src / app.py" Traceback ( последний вызов последним): Файл «C: / Users / SHIVAM TYAGI / PycharmProjects / price-of-Chair1 / src / app.py», строка 9, в печати (float (price_without_symbol)); ValueError: не удалось преобразовать строку в число с плавающей запятой: '8,900'


person shivam tyagi    schedule 15.02.2019    source источник
comment
Или заголовка stackoverflow.com/questions/6633523/   -  person mkrieger1    schedule 15.02.2019
comment
Должен результат '8,900' быть 8,9 или 8900?   -  person mkrieger1    schedule 15.02.2019
comment
@ mkrieger1 Поскольку это цена, она должна означать 8900   -  person Olivier Melançon    schedule 15.02.2019


Ответы (1)


В зависимости от используемого числового соглашения запятая может обозначать разделитель тысяч или десятичную точку.

Python float синтаксис чисел использует точку (.) как десятичная точка и необязательный знак подчеркивания (_) как разделитель тысяч, только для удобства чтения.

Это означает, что вам нужно знать, какое числовое соглашение использует число, которое вы читаете.

В вашем случае может показаться, что вы читаете числа, используя американско-английское числовое соглашение.

США-английский | 4 294 967 295,00

Все, что вам нужно, это удалить запятую, которая действует как разделитель тысяч.

price_without_symbol=price[1:].replace(',', '')
print(float(price_without_symbol))
person Olivier Melançon    schedule 15.02.2019
comment
Спасибо всем .. я получил свой ответ. - person shivam tyagi; 16.02.2019
comment
Если этот ответ был полезен, отметьте его как принятый. Ваше здоровье! - person Olivier Melançon; 16.02.2019