python - Python - 从具有不确定属性字段的表中解析数据
问题描述
我正在尝试通过 python 子进程从另一个 shell 程序的表输出中提取数据,输出如下所示。我创建了一个字典来容纳数据,但是我遇到了一些表列为空的问题,在这种情况下,我想将该键的值填充为“空”。
实例化字典:
my_dict = {'timestamp': '', 'ID': '', 'count(a)' : '', 'count(b)' : '',
'count(c)' : '', 'count(d)' : ''}
从另一个实用程序输出的表示例:
utc ID count(a) count(b) count(c) count(d)
2019-07-02 20:15:50.766868 115 274 390 4
2019-07-03 03:33:19.784049 115 274, 333 390 366
2019-07-03 03:33:20.635242 115 274 390
2019-07-03 03:33:21.581050 115 366 390 0
2019-07-03 03:35:20.061389 115 366 390
2019-07-03 03:35:20.062680 115 366 390 7
我最初通过换行符拆分输出以查看每一行:
temp_split = str(self.event_output).split('\n')
不能保证空格的数量,所以我尝试拆分超过 1 个空格(count(a) 有一个只有一个空格的示例),并尝试按制表符拆分:
for item in temp_split:
data_split = re.split(r"\s{2,}|\t", item)
正如您可能知道的那样,我遇到的问题是,因为我是按空格分割的,所以完全跳过了那些根本没有值的列。我曾尝试这样设置值,但我收到 indexoutofrange 错误,因为跳过了这些空项目:
redundancy_dict['timestamp'] = data_split[0]
redundancy_dict['id'] = data_split[1]
redundancy_dict['counta'] = data_split[2]
redundancy_dict['countb'] = data_split[3]
redundancy_dict['countc'] = data_split[4]
redundancy_dict['countd'] = data_split[5]
解决方案
推荐阅读
- python - 使用 Python 生成词频图的方法?
- go - 我可以依赖基于发送顺序的选择唤醒顺序吗?
- arrays - 二维数组上的 numpy logical.xor
- spring-boot - 执行 gradle 任务时出现随机未解决的参考错误
- docker - Docker 构建错误:“无法连接到服务器”(代理后面)
- python - python)如何通过变量或使用类导入某些东西
- javascript - JavaScript Mongodb:打印工资高于所有员工平均工资的员工姓名
- django - Django Rest Framework:未提供身份验证凭据
- google-maps - 检查字符串地址 X 是否在字符串地址 Y 内,使用 REST API 复杂多边形
- reactjs - 不正确的 JSS 样式顺序 - Material-UI