[Tutor] Dynamically assign variable names to tuple objects

Emile van Sebille emile at fenx.com
Tue Mar 1 21:14:13 CET 2011


On 3/1/2011 11:49 AM Sean Carolan said...
>> My advice would be to go read up on the zip() function and the
>> str.join() function. Then, if you are using python 2.x, go find
>> itertools.izip. It does the same thing as zip but it's more memory
>> efficient. With those two you can do it in about two lines or so (and
>> maybe a few for set up and clarity and such).
>
> This is what I've got so far:
>
> import sys
> myfiles = sys.argv[1:]
> for i in zip(open(myfiles[0]), open(myfiles[1]), open(myfiles[2])):
>      print " ".join(i)
>
> How would you:
>
> 1.  zip an arbitrary number of files in this manner?  I hard-coded it
> to do only three.

One way:

for i in zip([ open(filename) for filename in myfiles ])


> 2.  Strip out trailing spaces and line breaks from the lines in each file?

Convert the file contents before zip'ing -- so add

def cleanedup(filename):
     return [ line.strip() for line in open(filename) ]

Then your loop looks like:

for i in zip([ cleanedup(filename) for filename in myfiles ])


HTH,

Emile



More information about the Tutor mailing list