如何基于固定ID分割开头字节长度可变的拼接字符串?
解决方案
核心思路是利用**固定ID44B909**作为分割锚点——每个子串都是[字节长度标识][固定ID][内容]的结构,所有子串的起始位置都是[任意2位十六进制字符]44B909。用正则表达式匹配这个模式,在每个匹配到的子串前添加换行(第一个子串无需前置换行)即可。
修改后的代码如下:
import re def split_string(): input_str = input('请粘贴字符串:\n') # 匹配 "任意两位十六进制字符 + 44B909" 的子串起始模式 pattern = r'([0-9A-Fa-f]{2}44B909)' # 在每个匹配到的子串开头前加换行,同时保留原内容 result = re.sub(pattern, r'\n\1', input_str).strip() print('\n分割结果:') print(result) while True: split_string()
代码说明
- 正则表达式
([0-9A-Fa-f]{2}44B909):精准匹配任意两位十六进制字符(对应字节长度标识)加固定ID44B909的组合,也就是每个子串的起始标记。 re.sub(pattern, r'\n\1', input_str):将每个匹配到的起始标记替换为换行符+原标记,实现长字符串的分割。.strip():去除字符串首尾可能多余的换行符,保证输出格式整洁。
测试示例输入后,即可得到符合预期的分割结果。
内容的提问来源于stack exchange,提问作者michalb93
相关产品推荐
相关产品推荐

