ValueError: не удалось преобразовать строку в число с плавающей точкой: '31, 950 ' - PullRequest
0 голосов
/ 11 февраля 2020

Это мой код:

def check_price():
    page = requests.get(URL, headers=headers)

    soup = BeautifulSoup(page.content, 'html.parser')


    title = soup.find(id="itemTitle").get_text()
    price = soup.find(id="prcIsum").get_text()
    converted_price = float(price[4:10])
    converted_title = title[16:61]

    if(converted_price < 31.950):
        send_mail()

    print(converted_title)
    print(converted_price)

    if(converted_price > 31.000):
        send_mail()

Это ошибка, которую я получил

  File "C:/Users/Mario/PycharmProjects/Bitanga/AI.py", line 55, in <module>
    check_price()
  File "C:/Users/Mario/PycharmProjects/Bitanga/AI.py", line 20, in check_price
    converted_price = float(price[4:10])
  ValueError: could not convert string to float: '31,950'

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Вы должны заменить , в строке 31,950 на ., чтобы python мог распознать его как десятичный разделитель. Использование:

soup = BeautifulSoup(page.content, 'html.parser')


title = soup.find(id="itemTitle").get_text()
price = soup.find(id="prcIsum").get_text()
converted_price = float(price[4:10].replace(',', '.'))
converted_title = title[16:61]

if(converted_price < 31.950):
    send_mail()

print(converted_title)
print(converted_price)

if(converted_price > 31.000):
    send_mail()
0 голосов
/ 11 февраля 2020

Это потому, что ваша строка содержит символ, который не может быть преобразован ','. Для преобразования из string в int, float, double, long ur строка shld не должна содержать символов, которые не похожи на числа. Или вы можете использовать регулярное выражение для удаления всех таких символов, чтобы в вашей строке были только чистые числа. например.

number = str [/\d+(?:.\d+)?/]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...