Re: [Tutor] Tutor Digest, Vol 50, Issue 9
Hello :-) Can someone please explain to me ho can I find out how many elements are there in one record of a list? The problem is as follows: I have a txt file from which I read data into Python. The file looks something like this: 01 bla bla bla 23,15 2345,67 02 alb alb 2,4 890,1 03 bal bla alb lab 567,12345 87,45 I need to be able to discriminate the string parts from the numeric ones. Since the number of words in the file can vary, I have to be able to find out when they are finished and when the floats come in mystring[0]- always integer mystring[1]- string (word) mystring[1-X]- last string (word) mystring[X+1]- always float mystring[X+2]- always float it would have been nice if I could find out the total number of the fields in one list record so that I could then adress them via a variable. ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Tutor Digest, Vol 50, Issue 9
Hi Gloom, You should give a look at the method split (of the string objects) and int. The first is used do break a string into smaller pieces and the other to convert a string to an int object, raising an exception when it is not possible. On Wed, Apr 9, 2008 at 9:29 AM, Gloom Demon [EMAIL PROTECTED] wrote: Hello :-) Can someone please explain to me ho can I find out how many elements are there in one record of a list? The problem is as follows: I have a txt file from which I read data into Python. The file looks something like this: 01 bla bla bla 23,15 2345,67 02 alb alb 2,4 890,1 03 bal bla alb lab 567,12345 87,45 I need to be able to discriminate the string parts from the numeric ones. Since the number of words in the file can vary, I have to be able to find out when they are finished and when the floats come in mystring[0]- always integer mystring[1]- string (word) mystring[1-X]- last string (word) mystring[X+1]- always float mystring[X+2]- always float it would have been nice if I could find out the total number of the fields in one list record so that I could then adress them via a variable. ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor -- Ruivaldo Neto ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Tutor Digest, Vol 50, Issue 9
Gloom Demon wrote: Hello :-) Can someone please explain to me ho can I find out how many elements are there in one record of a list? The len() function gives the length of a list. I have a txt file from which I read data into Python. The file looks something like this: 01 bla bla bla 23,15 2345,67 02 alb alb 2,4 890,1 03 bal bla alb lab 567,12345 87,45 I need to be able to discriminate the string parts from the numeric ones. Since the number of words in the file can vary, I have to be able to find out when they are finished and when the floats come in You can also use slice indexing with negative numbers to index from the end: In [50]: data = '''01 bla bla bla 23,15 2345,67 : 02 alb alb 2,4 890,1 : 03 bal bla alb lab 567,12345 87,45 : '''.splitlines() In [51]: for line in data: : line = line.split() # Break the line at whitespace : print len(line) # Number of elements in the line : print line[1:-2] : print line[-2:] : print : : 6 ['bla', 'bla', 'bla'] ['23,15', '2345,67'] 5 ['alb', 'alb'] ['2,4', '890,1'] 7 ['bal', 'bla', 'alb', 'lab'] ['567,12345', '87,45'] Negative indices index from the end of the list, so line[1:-2] gives you the elements from line[1] up to but not including line[-2] which is the next-to-last element. Kent ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Tutor Digest, Vol 50, Issue 9
On Wed, Apr 9, 2008 at 12:59 PM, rui [EMAIL PROTECTED] wrote: Hi Gloom, You should give a look at the method split (of the string objects) and int. The first is used do break a string into smaller pieces and the other to convert a string to an int object, raising an exception when it is not possible. On Wed, Apr 9, 2008 at 9:29 AM, Gloom Demon [EMAIL PROTECTED] wrote: Hello :-) Can someone please explain to me ho can I find out how many elements are there in one record of a list? The problem is as follows: I have a txt file from which I read data into Python. The file looks something like this: 01 bla bla bla 23,15 2345,67 02 alb alb 2,4 890,1 03 bal bla alb lab 567,12345 87,45 I need to be able to discriminate the string parts from the numeric ones. Since the number of words in the file can vary, I have to be able to find out when they are finished and when the floats come in mystring[0]- always integer mystring[1]- string (word) mystring[1-X]- last string (word) mystring[X+1]- always float mystring[X+2]- always float it would have been nice if I could find out the total number of the fields in one list record so that I could then adress them via a variable. ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor -- Ruivaldo Neto ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor my guess would be something like this : a=open('/home/some_file.txt') for line in a: tmp_list_1=line.split() num_floats=0 num_strings=0 for i in tmp_list_1: if type(i) == int: num_floats=num_floats+1 else: num_strings=num_strings+1 if you explain more you case maybe i can get more ideas - hope this helps ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Tutor Digest, Vol 50, Issue 9
import re items = [] for line in open('data.txt'): items.append(re.sub('\n', '', line).split(' ')) - Original Message - From: Gloom Demon [EMAIL PROTECTED] To: tutor@python.org Date: Wed, 9 Apr 2008 15:29:35 +0300 Subject: Re: [Tutor] Tutor Digest, Vol 50, Issue 9 Hello :-) Can someone please explain to me ho can I find out how many elements are there in one record of a list? The problem is as follows: I have a txt file from which I read data into Python. The file looks something like this: 01 bla bla bla 23,15 2345,67 02 alb alb 2,4 890,1 03 bal bla alb lab 567,12345 87,45 I need to be able to discriminate the string parts from the numeric ones. Since the number of words in the file can vary, I have to be able to find out when they are finished and when the floats come in mystring[0]- always integer mystring[1]- string (word) mystring[1-X]- last string (word) mystring[X+1]- always float mystring[X+2]- always float it would have been nice if I could find out the total number of the fields in one list record so that I could then adress them via a variable. ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Tutor Digest, Vol 50, Issue 9
Kepala Pening wrote: import re items = [] for line in open('data.txt'): items.append(re.sub('\n', '', line).split(' ')) Hmm. So much to say about so little code! - the re.sub() is not needed - the split() will remove the trailing newline: In [53]: 'a b\n'.split() Out[53]: ['a', 'b'] - you don't need re to replace a fixed character, you can use str.replace(): In [55]: 'a b\n'.replace('\n', '') Out[55]: 'a b' - If you just want to strip the trailing newline you can use strip() or rstrip(), with or without args, depending on how strict you want to be: In [56]: 'a b\n'.strip() Out[56]: 'a b' - It's not clear that the OP wants a list of lines, but if so, a list comprehension is much more succinct: items = [ line.split() for line in open('data.txt') ] would do the job just fine. Kent ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor