首页 > 解决方案 > 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]

标签: pythondictionarydatatables

解决方案


推荐阅读