|
View:
New views
6 Messages
—
Rating Filter:
Alert me
|
|
|
Reading a tab delimited text file.Hi,
I would like to read a text file of numbers produced by a data acquisition system into three vectors of doubles. The contents of the file are: +0.0000000e+0 +2.7645134e+1 +2.7745625e+1 +0.4100041e-1 +2.7637787e+1 +2.7731047e+1 +0.0820008e+0 +2.7645134e+1 +2.7750483e+1 ... or +0.0000000e+0\t+2.7645134e+1\t+2.7745625e+1\r\n ... I would like to read the first column into time_vec, second into ch1_vec and so on. (I have never programmed in python and am having trouble finding a way to do this). Thanks -- http://mail.python.org/mailman/listinfo/python-list |
|
|
Re: Reading a tab delimited text file.> I would like to read a text file of numbers produced by a data
> acquisition system into three vectors of doubles. The contents of the > file are: > > +0.0000000e+0 +2.7645134e+1 +2.7745625e+1 > +0.4100041e-1 +2.7637787e+1 +2.7731047e+1 > +0.0820008e+0 +2.7645134e+1 +2.7750483e+1 > ... > > or > > +0.0000000e+0\t+2.7645134e+1\t+2.7745625e+1\r\n > ... > > I would like to read the first column into time_vec, second into > ch1_vec and so on. > > (I have never programmed in python and am having trouble finding a way > to do this). Well, a very terse way of doing it would be something like: time_vec, ch1_vec, and_so_on = zip(*( map(float, line.split()) for line in file('in.txt'))) If my junior developer authored that, I'm not sure whether I'd laud her or fire her. :) If this isn't homework, there are some less terse versions which are a bit easier on the eyes and less like some love-child between Perl and Python. -tkc -- http://mail.python.org/mailman/listinfo/python-list |
|
|
|
|
|
Re: Reading a tab delimited text file.Stephen wrote:
> Hi, > > I would like to read a text file of numbers produced by a data > acquisition system into three vectors of doubles. The contents of the > file are: > > +0.0000000e+0 +2.7645134e+1 +2.7745625e+1 > > +0.4100041e-1 +2.7637787e+1 +2.7731047e+1 > > +0.0820008e+0 +2.7645134e+1 +2.7750483e+1 > ... > > or > > +0.0000000e+0\t+2.7645134e+1\t+2.7745625e+1\r\n > ... > > I would like to read the first column into time_vec, second into > ch1_vec and so on. > > (I have never programmed in python and am having trouble finding a way > to do this). A simple starting point, without error handling, etc., could be: a_list = [] b_list = [] c_list = [] for line in open ('my_numbers.txt', 'rt'): a, b, c = [float (x) for x in line.split()] a_list.append (a) b_list.append (b) c_list.append (c) Assuming every line has three tab-separated numbers, the text versions of the numbers are all convertable to float, the text file that's opened will eventually be closed (whether by garbage collection or program termination.) This code does illustrate the string's split method, list comprehension, sequence unpacking, and the fact that each of a_list, b_list, c_list *MUST* be initialized with a distinct empty list object. Mel. -- http://mail.python.org/mailman/listinfo/python-list |
|
|
Re: Reading a tab delimited text file.>> time_vec, ch1_vec, and_so_on = zip(*(
>> map(float, line.split()) >> for line in file('in.txt'))) >> >> If this isn't homework, there are some less terse versions which >> are a bit easier on the eyes and less like some love-child >> between Perl and Python. > > haha, no this isn't homework. I'm a mechanical engineering student > working on a research project and this program is for my personal use > to analyze the data. The "zip-star map-float" variant is a pretty unreadable way to go. The more readable versions look something like data = [map(float, line.split()) for line in file('in.txt')] time_vec = [bit[0] for bit in data] ch1_vec = [bit[1] for bit in data] and_so_on = [bit[2] for bit in data] or even time_vec = [] ch1_vec = [] and_so_on = [] for line in file('in.txt'): a,b,c = map(float, line.split()) time_vec.append(a) ch1_vec.append(b) and_so_on.append(c) which could also be written as for line in file('in.txt'): line = line.split() time_vec.append(float(line[0])) ch1_vec.append(float(line[1])) and_so_on.append(float(line[2])) -tkc -- http://mail.python.org/mailman/listinfo/python-list |
|
|
|
| Free embeddable forum powered by Nabble | Forum Help |