簡體   English   中英

Python:將特定字符串與字符串組分開

[英]Python : seperate particular string from group of strings

我正在使用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

謝謝

您可以使用正則表達式。 re.findall將返回所有與模式匹配的事件:

>>> data = '78780a1301000400020017e73c0d0a787825260f071a0b050ac70165eaf0089b626021052e09019428139100fa7108000403020004a4810d0a78780a1301000409020016e73c0d0a'
>>> import re
>>> re.findall('7878.*?0d0a', data)
['78780a1301000400020017e73c0d0a',
 '787825260f071a0b050ac70165eaf0089b626021052e09019428139100fa7108000403020004a4810d0a',
 '78780a1301000409020016e73c0d0a']
  • 78780d0a匹配78780d0a字面上。
  • . 匹配任何字符。
  • .*匹配0個或多個任何(。)字符(貪婪) 追加? 會使比賽變得非貪婪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM