You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python2代码迁移至3.X触发int()空字符转换ValueError如何解决

Python 2.X 迁移 Python 3.X 代码修复方案

问题根源

报错和兼容问题核心来自三处错误:

  • f-string语法错误:原代码f'fractionfactor:e'没有将fractionfactor作为变量插值,而是将其作为普通字符串处理,拆分后得到的末尾片段为空,触发ValueError: invalid literal for int() with base 10: ''报错
  • 字符串格式化语法错误:原代码':0.0{}f'.format(value,Precision)格式符占位符位置错误,无法正确生成格式化规则,得到的结果不符合预期
  • 除法规则差异:Python 3中/默认返回浮点数,Python 2中/对整数默认执行整数除法,若要对齐原有逻辑需要调整运算符

修复后的完整代码

import pandas as pd

def format_value(valuetoformatx, fractionfactorx):
    value = valuetoformatx
    fractionfactor = fractionfactorx
    # 修复f-string变量插值错误,正确将fractionfactor转为科学计数法格式
    Precision = abs(int(f'{fractionfactor:e}'.split('e')[-1]))
    # 修复格式化字符串占位符错误,正确按指定精度格式化数值
    FormattedValue = float(f'{value:.{Precision}f}')
    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

额外适配说明

  • 若原逻辑依赖Python 2的整数除法特性(即int(str(5/2))返回2而非2.5),将所有整数除法场景的/替换为//即可对齐原有行为
  • 若需要保留数值截断而非四舍五入的逻辑,可以在格式化前对value做截断处理,例如使用math.trunc(value)或者int(value)实现

内容的提问来源于stack exchange,提问作者Jezi Hedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:27:01