pyparsing batch file
Paul McGuire
ptmcg at austin.rr.com
Wed Oct 17 16:37:25 EDT 2007
On Oct 17, 4:47 pm, Fabian Braennstroem <f.braennstr... at gmx.de> wrote:
<snip>
> Unfortunately, it does not parse the whole file names with
> the underscore and I do not know yet, how I can access the
> line with 'define/boundary-conditions'. Every 'argument' of
> that command should become a separate python variable!?
> Does anyone have an idea, how I can achieve this!?
> Regards!
> Fabian
You are trying to match "keps1500_500.dat" with the expression
"Word(alphanums)". Since the filename contains characters other than
alphas and numbers, you must add the remaining characters ("." and
"_") to the expression. Try changing:
write= Word(alphanums)
to:
write= Word(alphanums+"._")
To help you to parse "/define/boundary-conditions in velocity-inlet 10
0.1 0.1 no 1", we would need to know just what these arguments are,
and what values they can take. I'll take a wild guess, and propose
this:
real = Combine(integer + "." + integer)
defineBoundaryConditions = "/define/boundary-conditions" + \
oneOf("in out inout")("direction") + \
Word(alphanums+"-")("conditionName") + \
integer("magnitude") + \
real("initialX") + \
real("initialY") + \
oneOf("yes no")("optional") + \
integer("normal")
(Note I am using the new notation for setting results names,
introduced in 1.4.7 - simply follow the expression with ("name"),
instead of having to call .setResultsName.)
And here is a slight modification to your printout routine, using the
dump() method of the ParseResults class:
for tokens in defineBoundaryConditions.searchString(data):
print
print "Boundary Conditions = "+ tokens.conditionName
print tokens.dump()
print
print 50*"-"
prints:
Boundary Conditions = velocity-inlet
['/define/boundary-conditions', 'in', 'velocity-inlet', '10', '0.1',
'0.1', 'no', '1']
- conditionName: velocity-inlet
- direction: in
- initialX: 0.1
- initialY: 0.1
- magnitude: 10
- normal: 1
- optional: no
More information about the Python-list
mailing list