我正在 Python 中的十六进制字符串上使用 split() 函数。该字符串包含一个标记(0xffffffffffffffff),我想将其拆分出来。该标记后面是十六进制数据。十六进制化字符串中可以有多个“标记”。
现在我发现当我的第一个数据字符串以“ff”结尾并且下一个标记直接跟随它时存在问题(这种情况并不经常发生,但确实发生了)。
有什么办法可以拆分“右界”吗?
0a 0b 0c 0d 0e 0f ff ff ff ff ff ff ff ff 0a 0b 0c ...
在这种情况下,我希望字符串拆分如下:
0a 0b 0c 0d 0e 0f ->ff ff ff ff ff ff ff ff<- 0a 0b 0c ...
但它是这样分割的:
0a 0b 0c 0d 0e 0 ->f ff ff ff ff ff ff ff f-> f 0a 0b 0c ...
知道如何用 python 实现它吗?
当前代码非常简单:
a = "0a0b0c0d0e0fffffffffffffffff0a0b0c"
list = a.split("ffffffffffffffff")
[0]: 0a0b0c0d0e0
[1]: f0a0b0c
但应该是:
[0]: 0a0b0c0d0e0f
[1]: 0a0b0c
最佳答案
您可以将字符串转换为 bytes
/bytearray
并将其拆分
In [2]: b = bytes.fromhex(s).split(b'\xff'*8)
In [3]: b
Out[3]: [b'\n\x0b\x0c\r\x0e\x0f', b'\n\x0b\x0c']
然后将列表的每个元素转换回 str
In [4]: [x.hex() for x in b]
Out[4]: ['0a0b0c0d0e0f', '0a0b0c']
关于python - 分割字符串上的多个匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38121082/