[英]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']
7878
, 0d0a
匹配7878
, 0d0a
字面上。 .
匹配任何字符。 .*
匹配0個或多個任何(。)字符(貪婪) 。 追加?
會使比賽變得非貪婪。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.