Chris Castillo wrote:
why does your 3rd and fourth lines have brackets?
On Thu, Jul 16, 2009 at 1:08 AM, Christian Witts
<cwi...@compuscan.co.za <mailto:cwi...@compuscan.co.za>> wrote:
Chris Castillo wrote:
I'm having some trouble reading multiple data types from a
single text file.
say I had a file with names and numbers:
bob
100
sue
250
jim
300
I have a few problems. I know how to convert the lines into an
integer but I don't know how to iterate through all the lines
and just get the integers and store them or iterate through
the lines and just get the names and store them.
please help.
------------------------------------------------------------------------
_______________________________________________
Tutor maillist - Tutor@python.org <mailto:Tutor@python.org>
http://mail.python.org/mailman/listinfo/tutor
You could do it with a list comprehension
>>> names = []
>>> numbers = []
>>> [numbers.append(int(line.strip())) if line.strip().isdigit()
else names.append(line.strip()) for line in open('test.txt','rb')
if line.strip()]
[None, None, None, None, None, None]
>>> names, numbers
(['bob', 'sue', 'jim'], [100, 250, 300])
The list comprehension would unfold to
for line in open('test.txt', 'rb'):
if line.strip():
if line.strip().isdigit():
numbers.append(line.strip())
else:
names.append(line.strip())
And from there you can do what you like with the lists.
--
Kind Regards,
Christian Witts
>>> [numbers.append(int(line.strip())) if line.strip().isdigit() else
names.append(line.strip()) for line in open('test.txt','rb') if
line.strip()]
[None, None, None, None, None, None]
Are you referring to these lines ?
If so, the reason is that for Python to recognize it as a list
comprehension it needs to be wrapped in square brackets, if you were to
use () instead to wrap around it it would become a generator expression
(something which is incredibly powerful for larger amounts of data as it
iterates when it needs to instead of pre-building everything. And the
following line with the Nones on is because that is the output of the
calls to .append. Normally you wouldn't see it in your application though.
--
Kind Regards,
Christian Witts
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor