Am 06.10.2010 18:25, schrieb Eduardo Vieira:
The other day I was writing a script to extract data from a file from
the line where a text is found to the end of the file. The same
functionality is this sed script:
'1,/regexp/'d
I couldn't put my head to work around this and came up with a solution
using list slicing. But how can I do that? I was experimenting with a
simple list and I came up with this. I wonder if I shouldn't you a
"while" statement, but how?
a = ['m', 'a', 'r', 'i', 'g', 'o', 'l', 'd']
b = True
for letter in a:
if letter != 'i' and b:
continue
elif letter == 'i':
b = False
else:
print letter
Ok. This works, but I wonder if I shouldn't you a "while" statement, but how?
Why would you want to use a while-loop? You would need to somehow stop
the iteration (by catching some EOF Exception or the like). I think it's
fine to use a for-loop as you have a predefined fixed number of
iterations. I think your approach is OK. Easy to understand. But what if
there's a second "i" after the first? In your solution all "i" are
skipped. Also, I would choose clearer names:
letters = ['m', 'a', 'r', 'i', 'g', 'o', 'l', 'd', 'i', 'n', 'i', 'o']
skip_letter = True
for letter in letters:
if letter == 'i' and skip_letter:
skip_letter = False
continue # if you don't want the first occurrence of "i"
if not skip_letter:
print letter
Cheers,
Jan
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor