我遇到了一个让我头痛的严重问题。
我有一个具有不同测量值的传感器日志文件,它们都出现在子字符串'\ x02'和'\ x03'之间。但这里开始我的问题。我怎样才能将子串之间的所有值都放到一个新列表中。由于有许多测量,不仅有一个测量应该提供与'\ x02'和'\ x03'一样多的列表。
为了让您快速了解Logfile在我将其读入python后的样子:
['\x02sEA LMDscandata 1\x03\x02sSN LMDscandata 0 1 10B2E77 0 0 5BB6 E4FC 5FA60C99 5FA8C92F F0 0 0 0 F5B2 3E8 1\x03']
我真的尝试了很多(搜索子字符串,搜索索引等等)并且无法帮助自己,我期待着你的建议。
谢谢你
EDIT1:
我需要在\ x02和\ x03语句之间分隔列表。使用示例:
['\x02sEA LMDscandata 1\x03\x02sSN LMDscandata 0 1 10B2E77 0 0 5BB6 E4FC 5FA60C99 5FA8C92F F0 0 0 0 F5B2 3E8 1\x03 \x02sSN LMDscandata 0 1 10B2E77 0 0 5BB6 E4FC 5FA60C99 5FA8C92F F0 0 0 0 F5B2 3E8 1\x03']
因此,第一个List应该看起来像'list1 = [sSN LMDscandata 0 1 10B2E77 0 0 5BB6 E4FC 5FA60C99 5FA8C92F F0 0 0 0 F5B2 3E8 1'],第二个列表与此类似。我需要一个for循环,但我无法想象如何实现它..
答案 0 :(得分:1)
listfromreadlines = ['\x02sEA LMDscandata 1\x03\x02sSN LMDscandata 0 1 10B2E77 0 0 5BB6 E4FC 5FA60C99 5FA8C92F F0 0 0 0 F5B2 3E8 1\x03']
l1 = listfromreadlines[0]
items = [x.replace('\x02', "").replace('\x03', "") for x in l1.split('\x03\x02')]
# Thinking you might have sub items between the delimiters, I can only assume
# they are split by spaces:
subitems = [x.split(" ") for x in items]
答案 1 :(得分:0)
与John的答案几乎相同,但更简单,更易读:
l1 = '\x02sEA LMDscandata 1\x03\x02sSN LMDscandata 0 1 10B2E77 0 0 5BB6 E4FC 5FA60C99 5FA8C92F F0 0 0 0 F5B2 3E8 1\x03'
items = l1.strip('\x03\x02').split('\x03\x02')
print(items)
# prints: ['sEA LMDscandata 1', 'sSN LMDscandata 0 1 10B2E77 0 0 5BB6 E4FC 5FA60C99 5FA8C92F F0 0 0 0 F5B2 3E8 1']
答案 2 :(得分:0)
我建议使用正则表达式:
>>> lines = ['\x02sEA LMDscandata 1\x03\x02sSN LMDscandata 0 1 10B2E77 0 0 5BB6 E4FC 5FA60C99 5FA8C92F F0 0 0 0 F5B2 3E8 1\x03']
>>> import re
>>> [s for line in lines for s in re.findall('\x02(.*?)\x03', line)]
['sEA LMDscandata 1', 'sSN LMDscandata 0 1 10B2E77 0 0 5BB6 E4FC 5FA60C99 5FA8C92F F0 0 0 0 F5B2 3E8 1']