Строка ошибки значения не может быть преобразована в число с плавающей запятой?

import scrapy
from scrapy import Field,Item
from itemloaders.processors import TakeFirst,MapCompose

def get_price(txt):

    value = txt.replace('1.359,20','1.359')
    value = txt.replace(',','.')
    value = txt.strip('1.499,00')
    value = txt.strip('R$')
    float(value)

class MultilaserItem(scrapy.Item):
\# define the fields for your item here like:
\# name = scrapy.Field()
title = Field(output_process=TakeFirst())
price = Field(input_processor=MapCompose(get_price),output_processor=TakeFirst())
\#installment = Field(output_process=TakeFirst())

Твой текст, когда я делаю это value = txt.replace(',','.') не следует ли заменить значение в 14,90 на 14.90? но я застрял с ошибкой

ValueError: Error with input processor MapCompose: field='price' value=\['R$ 14,90'\] error='ValueError: Error in                MapCompose with \<function get_price at 0x7fa825ee0b80\> value=\['R$ 14,90'\] error='ValueError: could not convert string to float: ' 14,90

Кроме того, ваша функция get_price ничего не возвращает

Alexander 12.02.2023 01:17
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Учебник по веб-скрапингу
Учебник по веб-скрапингу
Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как...
Тонкая настройка GPT-3 с помощью Anaconda
Тонкая настройка GPT-3 с помощью Anaconda
Зарегистрируйте аккаунт Open ai, а затем получите ключ API ниже.
0
1
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Приведенный выше код применяет только последнюю операцию value = txt.strip('R$'), которая приводит к «14,90», что не является допустимым числом с плавающей запятой и вызывает ошибку значения.

Чтобы выполнить несколько операций над строкой, необходимо переназначить переменную после каждой операции.

Попробуйте функцию, подобную следующей, чтобы получить цену из строкового ввода:

def get_price(txt):
    txt = txt.replace(',','.')
    value = txt.strip('R$')
    return float(value)

price = get_price("R$ 14,90") 
print(f"{price:.2f}")

Выход:

14.90
value = txt.replace('1.359,20','1.359')
value = txt.replace(',','.')
value = txt.strip('1.499,00')
value = txt.strip('R$')

Эти замены используют исходное значение txt, поэтому они не суммируются. Каждый отменяет предыдущий. Таким образом, вы получите только окончательную замену strip('R$'). Первые три отбрасываются.

Другие вопросы по теме