On Mon, Jun 9, 2008 at 5:26 PM, Shrutarshi Basu <[EMAIL PROTECTED]> wrote:
> If I do the following:
>
> for item in block:
>
> where block is a file, then item becomes each line of the file in turn
> But if block in a large string (let's say the actual text that was in
> the file), item becomes each character at a time. Is there a way to
> have a uniform iteration irrespective of whether block is a file or
> string (ideally one \n-delimited line at a time)?
I would make a smart iterator that distinguishes between a file and a
string. For example (untested):
def lineIter(fileOrString):
if isinstance(fileOrString, file):
return iter(fileOrString)
return iter(fileOrString.splitlines())
Now you can say
for item in lineIter(block):
and get lines whether block is a file or a string.
Note that lines returned from a file will include newlines while those
from a string will not.
Kent
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor