Hello together,

currently I have to parse a string in an atomic way. Normally - in this case 
too - I have a counter variable to keep the current position inside the string. 
So far, I think this is the most flexible solution to do some lookaround's 
inside the string if necessary. Subroutines will be feed by the underlying data 
and the current position. A subroutine returns a tuple of the new position and 
the result. But I would like process subroutines with the same flexibillity 
(slicing/lookaround) but without returning the new position every again.

Is there any implementation like C++ StringPiece class? Or something like the 
following behavior:


>>>s = StringSlice('abcdef')
>>>s
StringSlice('abcdef') at xxx
>>>s[0]
'a'
>>>s.chop(1) # chop the first item
>>>s[0] # 'b' is the new first item
'b'
>>>s[:2]
'bc'
>>>s.chop(-1) # chop the last item
>>>s[-1]
'e'
>>>s[1:]
'cde'
>>>while s[0] != 'e':
       s.chop(1)
>>>s[0]
'e'
>>>s.startswith('e')
True
>>>s.isdigit()
False

Subroutines could chop the number of processed items internally if no error 
occours.

Another possibillty will be to chop the current item manually. But I don't know 
how efficient this is in case of large strings.

>>>while string:
       c = string[0]
       # process it ...
       string = string[1:]

But this assumes that I have to return rest of the string too and not useful for
my problem covered abrove.

Has anyone some tips what's the best practice to process a complex string, 
handling prositions in/and subroutines.

Thanks for all answers...
Cheers
Chris
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to