Исправление значений HEX в Excel путем добавления дополнительного нуля - PullRequest
0 голосов
/ 18 февраля 2020

Я нашел решение предыдущей заданной проблемы о многострочной конкатенации (), но обнаружил, что HEX-код некорректно отображается в Excel. Я обнаружил, что есть два случая, которые мне нужно исправить (импорт .csv / .txt после форматирования столбцов / листов не работает) значения, которые имеют один di git в столбцах 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

Прежде чем перейти к решению проблемы, я работал только с одним нулем, а не с двумя нулями. ди git выпуск. Каким-то образом программа даже не входит go в if cell.value == '0' часть. Я не знаю, в чем проблема. Не могли бы вы объяснить мне, почему я на неправильном пути? Спасибо!

1 Ответ

1 голос
/ 18 февраля 2020

Вы можете добавить .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
...