python - 从分隔符拆分二进制数据
问题描述
我正在尝试拆分这样的二进制数据字符串:
trama = b'1 ; 12.0073 ; NAN ; NAN\r\n919.537 ; 1082.14 ; 0\r\n0 ; 850.26 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0 ; #\r\n1 ; 11.9612 ; NAN ; NAN\r\n933.792 ; 1097.16 ; 0\r\n0 ; 846.597 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0 ; #\r\n'
我想要的是找到#
分隔符,因为这意味着此时一组数据结束,因此以下是另一个不同的示例。
我要这个:
[
['1', '12.0073', 'NAN', 'NAN', '919.537', '1082.14', '0', '0', '850.26', 'NAN', '0', '0', '0', '0', '0'],
['1', '11.9612', 'NAN', 'NAN', '933.792', '1097.16', '0', '0', '846.597', 'NAN', '0', '0', '0', '0', '0']
]
现在我正在做所有这些过程:
trama = b'1 ; 12.0073 ; NAN ; NAN\r\n919.537 ; 1082.14 ; 0\r\n0 ; 850.26 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0 ; #\r\n1 ; 11.9612 ; NAN ; NAN\r\n933.792 ; 1097.16 ; 0\r\n0 ; 846.597 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0 ; #\r\n'
values = [
i.strip().decode() for i in trama.split()
if i.strip().decode() not in [";"]
]
a, b = [], []
for i in values:
if i != '#':
b.append(i)
else:
a.append(b)
b = []
它有效,但我确信存在一种更简单的方法来做同样的事情。有人知道实现它的pythonic方法吗?
解决方案
首先在# 上拆分。
trama = b'1 ; 12.0073 ; NAN ; NAN\r\n919.537 ; 1082.14 ; 0\r\n0 ; 850.26 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0 ; #\r\n1 ; 11.9612 ; NAN ; NAN\r\n933.792 ; 1097.16 ; 0\r\n0 ; 846.597 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0 ; #\r\n'
lines = trama.decode('UTF-8').split('#')
records = []
for line in lines:
if not line.strip(): continue
records.append([v.strip() for v in line.replace('\r\n', ';').split(';') if v.strip()])
for values in records:
print(values)
推荐阅读
- unit-testing - 如何在 Java 中为 gremlin 查询编写单元测试?
- reactjs - 如何在本机反应中将参考从父级传递给子级Touchable Opacity?
- reactjs - 不同帖子下的相同评论
- mysql - Docker - Mysql 容器正在重新启动
- botframework - 深层链接 URL 无法重定向到移动应用程序中的团队选项卡
- reactjs - React Native - 嵌套文本中的 numberOfLines 但忽略最后一个元素
- sql-server - 更新具有重复列值的多条记录
- javascript - 如何在 setInterval 中更新状态对象?[挂钩]
- python - 我写了一个 pymongo 脚本来添加示例用户,但它不工作
- python - 如何合并存储在python变量中的多个路径中的所有文件?