Python 基于重复出现的模式将字符串切片到列表中

Python 基于重复出现的模式将字符串切片到列表中,python,Python,我有一个充满十六进制值的长字符串变量: hexValues='aa08e30202aa08e302aa1aaa08e3020101'等 第一个2字节(AA08)是帧开始的签名,下一个AA08之前的其余数据是签名的内容 我想根据重复出现的帧开始符号将字符串切分为一个列表,例如: list=[AA08、E302002、AA08、F25S1212、AA08、42ABC82]等等 我不知道怎样才能像这样把绳子分开。一些帧也已损坏,其中帧的开头不会有AA08,但可能是AA01。。所以我需要一些正则表达式来

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

hexValues='aa08e30202aa08e302aa1aaa08e3020101'

第一个
2字节(AA08)
是帧开始的签名,下一个AA08之前的其余数据是签名的内容

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

list=[AA08、E302002、AA08、F25S1212、AA08、42ABC82]
等等

我不知道怎样才能像这样把绳子分开。一些帧也已损坏,其中帧的开头不会有
AA08
,但可能是
AA01
。。所以我需要一些正则表达式来识别这些

如果我执行
list=hexValues.split('AA08)
,列表将删除帧的所有开头

所以我有点困了

python新手


感谢您在没有“损坏”数据的情况下执行以下操作:

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]

欢迎来到堆栈溢出。我们唯一能帮助您的方法是,如果您有一些特殊的问题和/或错误。我们不会为您编写解决方案。我不认为您的问题是python的新手,如果您不知道如何编写解决方案,python就不会发挥神奇的作用。试着自己试一试,如果你在某些方面遇到了困难,可以带着一个具体的问题回来。当然,你可以从拆分的结果中得到想要的列表。让每个其他元素都是
'AA08'
不会传递任何信息。如果你想让所有其他元素都成为“AA08”,那就这么做吧。同意以上两种观点,另外:除了
AA01
,什么意味着“损坏”帧?您听起来对需要拆分字符串的位置没有信心。@ImanolLuengo您说得很对。在阅读您的输入之前,我创建了一个答案。我下次会考虑的。现在删除我的答案是很小气的。@AndréChristofferAndersen回答这个问题真的没有什么错(特别是如果你的答案很酷并且可能对其他人有益,+1)。我只是认为,在这个特定的场景中,OP明天会提出另一个类似的问题。他只是尝试了文档中的一种方法,希望能带来一些魔力。这是解决问题的一种优雅方式。