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
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
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
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
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
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