Best way to delimit a list?

Giuseppe Ottaviano giuott at gmail.com
Tue May 13 09:17:40 EDT 2008


On May 13, 2008, at 12:28 PM, dannywebster at googlemail.com wrote:

> Hi - I have a list returned from popen/readlines, and am wondering how
> to go about iterating over each item which was returned (rather than
> currently having the whole lot returned).
>
> so far:
>
>>>> f=os.open("./get_hostnames").readlines
>
> returns ['host1 host2 host3 ... hostN\n]'
>
> i'd like to be in a position to iterate through these, grabbing each
> host.  I have played with transmuting to a str, and using split, and
> this works, but I get the subscript brackets from the list output as
> expected, as the list output is now a string literal, and this is not
> what I want - and I think it's a bit long-winded to do a search 'n
> replace on it - hence why I ask in the subject what's the best way.
>
>>>> f=str(f)
>>>> f.split()
> ["['host1","host2", ... ,"hostN\n']"]

If the file is really big, you may want not to construct an actual  
list with all the words, but instead use an iterator. If you define  
the function

def ichain(seq):
	for s in seq:
		for x in s: yield x

(which is often useful and I don't think it has been included in  
itertools) you can iterate lazily on the file:

hosts = ichain(s.split() for s in f)
for host in hosts:
	# ...

HTH,
Giuseppe




More information about the Python-list mailing list