#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
модуля.