def price_dec(raw_price, default=_not_defined):
    """Price decimal value from raw string.

    Extract price value from input raw string and
    present as Decimal number.

    If raw price does not contain valid price value or contains
    more than one price value, then return default value.
    If default value not set, then raise ValueError.

    :param str raw_price: string that contains price value.
    :param default: value that will be returned if raw price not valid.
    :return: Decimal price value.
    :raise ValueError: error if raw price not valid and default value not set.
    """
    try:
        price = price_str(raw_price)
        return decimal.Decimal(price)

    except ValueError as err:
        if default == _not_defined:
            raise err

    return default
Price decimal value from raw string.

    Extract price value from input raw string and
    present as Decimal number.

    If raw price does not contain valid price value or contains
    more than one price value, then return default value.
    If default value not set, then raise ValueError.

    :param str raw_price: string that contains price value.
    :param default: value that will be returned if raw price not valid.
    :return: Decimal price value.
    :raise ValueError: error if raw price not valid and default value not set.