2016-08-17 32 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對應於列名的字段。

相關問題