Pythonic способ поиска различий между двумя строками

#python-3.x #string

#python-3.x #строка

Вопрос:

 a = "3030104AF43B000A3F1D200619D09FE00403031324354650004FFFFF"
b = "3030104BE3B000C3DF1D200617183BA00403030335F5B6F0004FFFFF"
 

Допустим a , и b — это две шестнадцатеричные строковые значения, равные и равные по длине. Они также используют один и тот же формат, так что различия, возникающие между обеими строками, всегда происходят в одной и той же позиции (но изначально я не знаю, в какой позиции возникают эти различия). Например a , первые шесть цифр совпадают b с первыми шестью цифрами. т.е. 303010 . Следующие 4 цифры отличаются 4AF43B по a сравнению с b , после чего следующие две цифры одинаковы для a and b ( 00 ) . Этот шаблон продолжается до конца обеих строк.

Я написал код для хранения различий, возникающих в виде разных элементов в a list .

 seed = "3030104AF43B000A3F1D200619D09FE00403031324354650004FFFFF"
seed2 = "3030104BE3B000C3DF1D200617183BA00403030335F5B6F0004FFFFF"
seed = seed.rstrip("FF")
seed2 = seed2.rstrip("FF")
differences_list1 = []
differences_list2 = []
sequence1 = ""
sequence2 = ""
for pair in range(int(len(seed) / 2)):
    data_pair1 = seed[pair * 2:(pair * 2)   2]
    data_pair2 = seed2[pair * 2:(pair * 2)   2]
    if data_pair1 == data_pair2:
        if sequence1 == "" and sequence2 == "":
            continue

        # here, we know it is not an empty sequence
        differences_list1.append(sequence1)
        differences_list2.append(sequence2)
        sequence1 = ""
        sequence2 = ""
        continue

    # when they are not equal to each other
    sequence1 = sequence1   data_pair1
    sequence2 = sequence2   data_pair2

print(str(differences_list1))
print(str(differences_list2))
 

Вывод (который я хочу):

 ['4AF43B', '0A3F', '19D09FE0', '1324354650']
['4BE3B0', 'C3DF', '17183BA0', '0335F5B6F0']
 

Я каким-то образом получил результат, как я хотел, но я хотел бы знать, как я могу улучшить / написать свой код более питоническим способом (в частности, python3.9)?

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

1. Вы должны спросить об этом по адресу codereview.stackexchange.com

2. Я бы начал с рассмотрения difflib модуля.