Terry Reedy wrote:
Dale Amon wrote:
Now I can move on to parsing those pesky Fortran card
images... There wouldn't happen to be a way to take n
continguous slices from a string (card image) where each slice may be
a different length would there? Fortran you know. No spaces between
input fields. :-)
I know a way to do it, iterating over a list of slice sizes,
Yes.
perhaps in a list comprehension, but some of the august python
personages here no doubt know better ways.
No. Off the top of my head, here is what I would do something like
(untested)
def card_slice(card, sizes):
"Card is data input string. Sizes is an iterable of int field sizes,
where negatives are skipped fields. Return list of strings."
pos, ret = 0, []
for i in sizes:
if i > 0:
ret.append(card[pos:pos+i])
else:
i = -i
pos += i
I would shorten that a little to:
if i > 0:
ret.append(card[pos:pos+i])
pos += abs(i)
return ret
To elaborate this, make sizes an iterable of (size, class) pairs, where
class is str, int, or float (for Fortran) or other for more generel use.
Then
...
for i,c in sizes:
if i > 0:
ret.append(c(card[pos:pos+i]))
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list
--
http://mail.python.org/mailman/listinfo/python-list