根据重复出现的模式将字符串切片到列表中

2024-05-14 01:20:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个充满十六进制值的长字符串变量:

hexValues = 'AA08E3020202AA08E302AA1AA08E3020101'等。。你知道吗

第一个2 bytes (AA08)是帧开始的签名,其余的数据直到下一个AA08是签名的内容。你知道吗

我想根据重复出现的开始帧符号将字符串切分为一个列表,例如:

list = [AA08, E3020202, AA08, F25S1212, AA08, 42ABC82]等等。。。你知道吗

我不知道怎样才能把绳子这样分开。有些帧也损坏了,帧的开始部分不会有AA08,但可能有AA01。。所以我需要一些正则表达式来识别这些。你知道吗

如果我这样做list = hexValues.split('AA08)',列表只会删除帧的所有开头。。。你知道吗

所以我有点卡住了。你知道吗

python新手。你知道吗

谢谢


Tags: 数据字符串内容列表bytes符号listsplit
2条回答

对于没有“损坏”数据的情况,应执行以下操作:

hex_values = 'AA08E3020202AA08E302AA1AA08E3020101'
delimiter = hex_values[:4]
hex_values = hex_values.replace(delimiter, ',' + delimiter + ',')
hex_list = hex_values.split(',')[1:]
print(hex_list)


['AA08', 'E3020202', 'AA08', 'E302AA1', 'AA08', 'E3020101']

不考虑腐败,你可以试试这个。你知道吗

l = []
for s in hexValues.split('AA08'):
    if s:
        l += ['AA08', s]

相关问题 更多 >