通过附加零更正 Excel 中的十六进制值

Correcting HEX values in Excel by appending additional zero

我确实找到了先前提出的多行连接问题的解决方案 ( HEX 代码在 Excel 中显示不正确。我发现有两种情况,我需要更正(在格式化 columns/sheet 后导入 .csv/.txt 不起作用)在 F 到 M 列中具有单个数字的值,然后再将它们连接起来。 Excel 将 "00" 更改为 "0" 以及 "02"(或任何其他数字而不是 2)更改为 "2"。这对我来说很重要,因为这些位将丢失并且所有数据都将变得无用。

所需输入:

A  B  C D  E            F            G   H  .. M
.. 2E .... 0000000000000AA4.. 
...4A ...  0002478304.. 

当前输入:

A  B  C D  E            F            G   H  .. M
.. 2E .... 0000000AA4.. 
...4A ...  0247834.. 

组织:

A  B  C D  E            F            G   H  .. M
.. 2E .... 00 00 00 00 00 00 0A A4.. 
...4A ...  00  02 47 83 04.. 

到目前为止我使用的代码:

def concat_f_to_m():
    for row_value in range(1, sheet.max_row+1):
        values=[]
        del values[:]
        for row in sheet.iter_rows(min_col=6, max_col=14, min_row=row_value, max_row=row_value):
            for cell in row:
                if cell.value != None:
                    if cell.value == '0':
                        values.append("00")
                        print("zeros", values)
                    else:   
                        values.append(str(cell.value))
                        print("non-zeros", values)
                    sheet[f'E{row_value}'].value= ''.join(values)
                else:
                    del values[:] 
                    break

在解决数字问题之前,我只处理了一个零而不是两个零的问题。不知何故,该程序甚至没有进入 if cell.value == '0' 部分。我不知道是什么问题。你能向我解释为什么我走错了路吗?谢谢!

您可以将 .zfill(x) 添加到字符串值中,使其长度至少为 x。由于您需要 2 个字符,因此您将 .zfill(2).

def concat_f_to_m():
    for row_value in range(1, sheet.max_row+1):
        values=[]
        del values[:]
        for row in sheet.iter_rows(min_col=6, max_col=14, min_row=row_value, max_row=row_value):
            for cell in row:
                if cell.value != None:
                    values.append(str(cell.value).zfill(2))
                    sheet[f'E{row_value}'].value= ''.join(values)
                else:
                    del values[:] 
                    break