Python:从字符串组中分离特定字符串

2024-10-03 15:28:29 发布

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

我在做GPS跟踪器。跟踪器发送一些数据包。每个包以起始位(7878)和停止位(0d0a)开始。有时我会收到一组数据包。我想把这组数据包分开。我使用下面的代码来分割这两个字符。你知道吗

data='78780a1301000400020017e73c0d0a787825260f071a0b050ac70165eaf0089b626021052e09019428139100fa7108000403020004a4810d0a78780a1301000409020016e73c0d0a'
splt_data= [data[i:i+2] for i in range(0, len(data), 2)]

我想要下面这样

78780a1301000400020017e73c0d0a
787825260f071a0b050ac70165eaf0089b626021052e09019428139100fa7108000403020004a4810d0a
78780a1301000409020016e73c0d0a

如果“0a或0d或78或”不在起始位和停止位之间,我可以拆分这些数据包。如果有可能得到起始位或停止位本身如何分离。例如,下面是一个数据包,它在起始位(7878)和停止位(0d0a)之间包含“0a”。你知道吗

7878ka130100**0a**00020017e73c0d0a

谢谢


Tags: 代码infordatalenrange数据包字符
1条回答
网友
1楼 · 发布于 2024-10-03 15:28:29

可以使用正则表达式。^{}将返回与模式匹配的所有匹配项:

>>> data = '78780a1301000400020017e73c0d0a787825260f071a0b050ac70165eaf0089b626021052e09019428139100fa7108000403020004a4810d0a78780a1301000409020016e73c0d0a'
>>> import re
>>> re.findall('7878.*?0d0a', data)
['78780a1301000400020017e73c0d0a',
 '787825260f071a0b050ac70165eaf0089b626021052e09019428139100fa7108000403020004a4810d0a',
 '78780a1301000409020016e73c0d0a']
  • 78780d0a符合78780d0a字面意思。你知道吗
  • .匹配任何字符。你知道吗
  • .*匹配0个或更多任何(.)字符(greedy)。附加?将使匹配不贪婪。你知道吗

相关问题 更多 >