So maybe a bit bold for a newbie to start posting a correction but i wanted the code to work:
Kent Johnson wrote: <snip>
columns = [1,3,4] # Column numbers to show, 0-based
f = open('mydata.txt')
for line in f:
data = line.split() # Assuming your data is tab- or space-delimited
data = [ item for i, item in data if i in columns ] # Filter out unwanted columns
print data # Output one row of text - put your formatting here
guess Kent forgot one line after:
data = line.split()
adding next line after it:
data = enumerate(data)
makes it work for me.
Ah, right you are. I should know better than to post code without trying it! Actually I meant to write data = [ item for i, item in enumerate(data) if i in columns ] which is just a more compact way of saying the same thing.
Still got a question. This notation/syntax of the list:
[ item for i, item in data if i in columns ]
is quite new for me. Can someone point me to more examples of this use Or give me the name of it (it must have a name) so i can google it?
It's called a 'list comprehension'. It is a handy shortcut for a loop that builds a list from another list. You can read more about them here:
http://docs.python.org/tut/node7.html#SECTION007140000000000000000
The line data = [ item for i, item in enumerate(data) if i in columns ]
is equivalent to
temp = []
for i, item in enumerate(data):
if i in columns:
temp.append(item)
data = tempList comprehensions are generally more concise, easier to read (once you understand the syntax) and faster running than the equivalent spelled-out loop.
Kent _______________________________________________ Tutor maillist - [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/tutor
