python - 如何获取由Python列表中的项目组成的整数中的前导零

标签 python python-3.x

我正在尝试创建一个由多个 modbus 寄存器构造的六位数字。 我不知道 modbus 寄存器如何工作,但能够将某些数字映射到十进制值。

示例:

'12336': '00', 
'12592': '01', 
'12848': '02', 
'13104': '03',
.
.
.
'14649': '99'

我创建了一个字典,其中包含从00到99的完整数字列表,我开始读取3个holdng寄存器并迭代它们,并创建一个空列表,该列表填充与字典中的键:值对相对应的值我加入它们并转换为整数,希望得到 6 位数字。仅当我的号码上没有前导零时,它才有效,但是,如果我确实有前导零,我的号码就会被减少到该重要数字开始的位置。

我的代码:

NUMBERS  = {
    '12336': '00', '12592': '01', '12848': '02', '13104': '03', '13360': '04', '13616': '05', '13872': '06', '14128': '07', '14384': '08', '14640': '09', '12337': '10',

    }




def scanned_code():
    code = client.read_holding_registers(1, 3, unit=0)
    r = code.registers
    print(r)
    value = []

    for i in r :
        value.append(NUMBERS[str(i)])
    return value

def numb(lista):
    print(lista)
    res = int("".join(map(str, lista)))
    return res



scan_job = numb(scanned_code())
print(scan_job)

假设我有 3 个保持寄存器,其值如下:12336、13360、14128我希望生成这个数字000407。相反,我得到 407

执行脚本时在终端中获取的实际值

[12592, 13360, 14128]
['01', '04', '07']
10407

[12336, 13360, 14128]
['00', '04', '07']
407

最佳答案

在 Python(以及几乎任何其他编程语言)中,数字存储为二进制整数。因此,“前导零”的概念毫无意义:对于计算机来说,123000123 的存储方式完全相同。 (事实上​​,数学家会说它们代表完全相同的值。)

如果您想要前导零,则应将该值存储为字符串。只需删除 numb 函数中的 int 调用即可。

关于python - 如何获取由Python列表中的项目组成的整数中的前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55083713/

相关文章:

python - 如何使用 celery 任务创建单个文件可执行文件

python - 根据另一个的范围和类别填充 Pandas 列

用于检查 url 是否存在的 Python 脚本失败并出现 HTTPConnectionPool 错误

python-3.x - 使用 np.where 或 loc 更新 pandas 数据框的多列

python - 您可以使用 loc 选择范围内的列加上范围外的列吗?

python - numpy 和 scipy 中的 cholesky 有什么区别?

python - keras LSTM 预测不佳

python - Groupby 搜索第一个和最后一个真值

python - 将字典值映射到 Pandas 数据框列

python-3.x - 如何在不下载的情况下在 AWS S3 中列出 tar 中的文件?