P
Paul McGuire
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 "Boundary Conditions = "+ tokens.conditionName
print tokens.dump()
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