2016-08-17 37 views
-1

我有一些文本文件中的数据与其他行有更多的参数(没有特定的顺序)的一些行。数据中约有90个参数。行不遵循特定的模式,也许不同

例如 前100行有4个参数,如:

{ “A”:1.675, “B”:21.8, “C”:34, “d”:63}

现在线150 - 200有6个参数,如:

{ “A”:1.675, “B”:21.8, “C”:34, “d”:63, “E”:34,“F “:87}

然后线200-250是再次像第一100喜欢 ,然后在某处线350-400之间再有6个参数,但在像不同的格式:

{“A”:1.675,“B” :21.8, “C”:34, “F” 63, “E”:34, “d”:87}

我想要的数据进行处理并出现像:

这是数据的外观:

{"total_gas":0.0,"hook_load":9.7,"mud_flow_in":0.0,"pump_spm_total":0.0,"svy_azimuth":171.8872648725456,"pit_volume_8":0.0,"gain_loss":0.3,"pit_volume_7":0.0,"pit_volume_6":0.0,"block_height":114.9,"pit_volume_5":0.0,"pit_volume_4":0.0,"pit_volume_3":0.0,"pit_volume_2":0.0,"drill_hardness":0.0,"pit_volume_1":0.0,"strks_pump_3":0.0,"weight_on_bit":0.0,"strks_pump_1":0.0,"strks_pump_2":0.0,"standpipe_pressure":0.0,"mud_flow_out":0.0,"state":"InSlips","svy_depth":0.0,"mud_volume":484.1,"rotary_rpm":0.0,"strks_total":0.0,"hole_depth":0.0,"pump_spm_3":0.0,"pump_spm_2":0.0,"rop_fast":0.0,"pump_spm_1":0.0,"mud_temp_in":0.0,"svy_inclination":229.18301983006077,"mud_temp_out":0.0,"rotary_torque":0.006,"gamma_ray":0.0,"diff_press":0.0,"bit_depth":0.0,"rop_average":0.0}~{} 

我想要的程序读取每一行并将其放置在相应的列。我只知道java,excel和matlab。

+1

请发布您尝试过的代码,如果您还没有这样做,请阅读如何创建[mcve]。 – user1875195

+0

什么程序?如果没有提供某种程度的指示说明您有编程编码问题(例如某些代码无法工作)而不是显示要求提供代码编写服务,那么您很可能会得到不良反应。 – MikeT

+0

欢迎来到Stack Overflow!欢迎来到堆栈溢出!您能否在解决问题的努力中获得更好的标题和更详细的内容信息? – manetsus

回答

0

看起来好像您的文件是以格式编写的(有关更多信息,请参阅json info)。

可以使用MATLAB的regexp解析文件:

fid = fopen('/path/to/file'); 
line = fgetl(fid); 
out = struct(); 
while ischar(line) 
    res = regexp(line, '\{([^\}]+)\}','tokens','once'); %// remove {} from line 
    if isempty(res) 
     continue; %// empty line? 
    end 
    res2 = regexp(res{1},'"([^"]+)"\s*:\s*([^,]+),?', 'tokens'); %// get the key-value pairs 
    for ii=1:numel(res2) 
     if isfield(out, res2{ii}{1}) 
      out.(res2{ii}{1}){end+1} = str2double(res2{ii}{2}); 
     else 
      out.(res2{ii}{1}) = {str2double(res2{ii}{2})}; 
     end 
    end 
    line = fgetl(fid); 
end 
fclose(fid); 

你应该拥有所有的数据是结构out对应于列名的字段。