Re: How to extract a pattern
- To: mathgroup at smc.vnet.net
- Subject: [mg119645] Re: How to extract a pattern
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Thu, 16 Jun 2011 03:59:26 -0400 (EDT)
- Reply-to: hanlonr at cox.net
filter[data_List, key_String] := Select[data, MemberQ[#, key] &]; data = {{"MEN(00)=", "total", "sa=", 3.717*10^-6, "[um]"}, {"Field", "[m/s]:", 2.615, 80., 83., 51., 10., 6., 5., 66., 1.175}, {"Filtered", "[m/s]:", 1.2, 4.2, 2., 46., 520., 990., 800., 143., 862.}, {}, {"(iter)", "Filter", "A"}, {"lbl", 5, 2., 20., 20., 20., 2.}, {"mod", 5, 0., 0.6, 0., 0.7, 0.}, {"(iter)", "Filter", "B"}, {"lbl", 1, 14., 14., 600., 660., 50., 20., 10., 15., 16., 1.}, {"mod", 10, 0., 0.14, 1., 0.97, 0.97, 0.9, 0.89, 0.7, 0.1, 0.}, {"(iter)", "Filter", "C"}, {"lbl", 5, 1., 1., 1., 1., 1.}, {"mod", 5, 0., 0.1, 1., 0.6, 0.6}, {"(iter)", "Filter", "D"}, {"lbl", 7, 1., 1., 1., 1., 1., 1., 1.}, {"mod", 7, 0., 10., 0.1, 10., 0., 0.8, 0.}, {"(iter)", "Filter", "E"}, {"lbl", 5, 9., 9., 9., 9., 9.}, {"mod", 5, 0., 0.2, 7., 0.9, 0.}, {"(iter)", "Filter", "F"}, {"lbl", 2, 3., 4.}, {"mod", 2, 1., 1.}, {"(iter)", "Filter", "G"}, {"lbl", 2, 3., 3.}, {"mod", 2, 1., 1.}, {"(iter)", "Filter", "H"}, {"lbl", 2, 1., 3.}, {"mod", 2, 1., 1.}, {"#"}}; filter[data, "Filter"] {{"(iter)", "Filter", "A"}, {"(iter)", "Filter", "B"}, {"(iter)", "Filter", "C"}, {"(iter)", "Filter", "D"}, {"(iter)", "Filter", "E"}, {"(iter)", "Filter", "F"}, {"(iter)", "Filter", "G"}, {"(iter)", "Filter", "H"}} filter[data, "lbl"] {{"lbl", 5, 2., 20., 20., 20., 2.}, {"lbl", 1, 14., 14., 600., 660., 50., 20., 10., 15., 16., 1.}, {"lbl", 5, 1., 1., 1., 1., 1.}, {"lbl", 7, 1., 1., 1., 1., 1., 1., 1.}, {"lbl", 5, 9., 9., 9., 9., 9.}, {"lbl", 2, 3., 4.}, {"lbl", 2, 3., 3.}, {"lbl", 2, 1., 3.}} filter[data, "mod"] {{"mod", 5, 0., 0.6, 0., 0.7, 0.}, {"mod", 10, 0., 0.14, 1., 0.97, 0.97, 0.9, 0.89, 0.7, 0.1, 0.}, {"mod", 5, 0., 0.1, 1., 0.6, 0.6}, {"mod", 7, 0., 10., 0.1, 10., 0., 0.8, 0.}, {"mod", 5, 0., 0.2, 7., 0.9, 0.}, {"mod", 2, 1., 1.}, {"mod", 2, 1., 1.}, {"mod", 2, 1., 1.}} Bob Hanlon ---- Ted Sariyski <tsariysk at craft-tech.com> wrote: ============= Hi, I have the following problem. I have to extract from a file data structure which is specified by a label (e.g. "A"), a set of points ("lbl") and the corresponding weights ("mod") (example is attached). Data is berried within a lot of garbage. The only invariant structure in all files is e.g.: {"(iter)","Filter", "A"}, {"lbl", 5, 2., 20., 20.,20., 2.}, {"mod", 5, 0., 0.6, 0., 0.7, 0.} where "ilter", "lbl" and "mod" are always present but "{iter}" differs from file to file. The first element after "lbl" and "mod" is the same - the number of point for this filter. How can I extract only these list elements which contain "Filter" and "lbl" and "mod"? Thanks in advance, Ted {{"MEN(00)=", "total", "sa=", 3.717*10^-6, "[um]"}, {"Field", "[m/s]:", 2.615, 80., 83.,51., 10., 6., 5., 66.,1.175}, {"Filtered", "[m/s]:", 1.2, 4.2, 2., 46., 520., 990., 800., 143., 862.}, {}, {"(iter)", "Filter", "A"}, {"lbl", 5, 2., 20., 20., 20., 2.}, {"mod", 5, 0., 0.6, 0., 0.7, 0.}, {"(iter)", "Filter", "B"}, {"lbl", 1, 14., 14., 600.,660., 50., 20., 10., 15., 16., 1.}, {"mod", 10, 0., 0.14, 1., 0.97, 0.97, 0.9, 0.89, 0.7, 0.1, 0.}, {"(iter)", "Filter", "C"}, {"lbl", 5, 1., 1., 1., 1., 1.}, {"mod", 5, 0., 0.1, 1., 0.6, 0.6}, {"(iter)", "Filter", "D"}, {"lbl", 7, 1., 1., 1., 1., 1., 1., 1.}, {"mod", 7, 0., 10., 0.1, 10., 0., 0.8, 0.}, {"(iter)", "Filter", "E"}, {"lbl", 5, 9.,9., 9., 9., 9.}, {"mod", 5, 0., 0.2, 7., 0.9, 0.}, {"(iter)", "Filter", "F"}, {"lbl", 2, 3.,4.}, {"mod", 2, 1., 1.}, {"(iter)", "Filter", "G"}, {"lbl", 2, 3., 3.}, {"mod", 2, 1., 1.}, {"(iter)", "Filter", "H"}, {"lbl", 2, 1.,3.}, {"mod", 2, 1., 1.}, {"#"}}