Ошибка значения: недопустимый литерал для int() с основанием 10: «от Python 2.X до 3.X

#python #python-3.x

Вопрос:

Я пытаюсь работать над проектом, и у меня есть код, но он написан на python 2.X, В настоящее время я работаю над Python 3.X, и когда я пытаюсь

X= abs(int(f'fractionfactor:e'.split('e')[-1]))

в Python 2.X результат .split отправит обратно только десятичную часть для примера int(str(5/2)) даст мне взамен «2», но в python 3.X я получу «2,5» для того же кода вот полная часть, в которой я сейчас застрял

 def format_value(valuetoformatx, fractionfactorx):
    value= valuetoformatx
    fractionfactor= fractionfactorx
    Precision= abs(int(f'fractionfactor:e'.split('e')[-1]))
    FormattedValue= float(':0.0{}f'.format(value,Precision))
    return FormattedValue

def parPriceinfo(ticker,client):
    info= client.get_symbol_info(ticker)
    minPrice= pd.to_numeric(info['filters'][0]["minPrice"])
    return minPrice

def pairQtyinfo(ticker,client):
    info= client.get_symbol_info(ticker)
    minQty= pd.to_numeric(info['filters'][2]['minQty'])
    return minQty
 

ошибка:

недопустимый литерал для int() с основанием 10: «

Я надеюсь, что предоставил достаточно информации. заранее спасибо!

Ответ №1:

В строке f вам нужно поместить {} переменную для форматирования и выражение форматирования.

 Precision= abs(int(f'fractionfactor:e'.split('e')[-1]))
 

должно быть

 Precision= abs(int(f'{fractionfactor:e}'.split('e')[-1]))
 

Комментарии:

1. да, я только что изменил его, и он работает, спасибо, чувак, и просто для записи я также должен перейти FormattedValue= float(':0.0{}f'.format(value,Precision)) на FormattedValue= float('{:0.0{}f}'.format(value,Precision)) @barmar еще раз спасибо !