parsing the output from matlab

Travis Brady travis.brady at gmail.com
Tue Oct 23 10:08:28 EDT 2007


On 10/22/07, wang frank <fw3 at hotmail.co.jp> wrote
>
>
> I have a big log file generated from matlabe, for each variable, it print
> the name of the variable and an empty line and then the value. such as:
>
> x1 =
>
>     0.1
>
> y =
>
>    7
>
> z =
>
>    6.7
>
> x1 =
>
>    0.5
>
> I want to use python to parse the file and selectively print out the
> vairable and its value. For example, I want to print out all the value
> related with x1, so the output will be
>
> x1 = 0.1
> x1 = 0.5.
>
>

Here is a fairly naive version with re named groups that should handle the
example you pasted.
In [62]: import re

In [63]: px = re.compile('(?P<variable>\w+)\s=\s+(?P<value>\d.*\d*)')

In [64]: for var in px.finditer(s):
    print "%s = %s" %(var.group('variable'), var.group('value'))
   ....:
   ....:
a = 0.1
y = 7
z = 6.7
x1 = 0.5

To filter for only the x1's just test for the group named 'variable':

In [66]: for var in px.finditer(s):
   ....:     if var.group('variable')=='x1':
   ....:         print "%s = %s" %(var.group('variable'), var.group
('value'))
   ....:
   ....:
x1 = 0.5

But I'm betting these files get more complex than just the snippet you
included, in which case it's probably worth looking at pyparsing
http://pyparsing.wikispaces.com/ and regular expressions.




-- 
Travis Brady
http://travisbrady.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20071023/26d48f7f/attachment.html>


More information about the Python-list mailing list