Hi, Tim,
 
Thanks for your help. For some reason, I only get your reply from the forum.
 
This is not a homework problem since I have left the school long time ago. I am 
new to Python and find it very interesting so I decided to try to port a big 
project from matlab to python. To prove the value of the python, I need to find 
an python way to do it. Otherwise, the result may be slower than matlab. The 
input file contains many lines of data starts with a label. The data lengths 
are not the same and the data type is mixed with int and float. Some lines 
start with comment sign # need to be removed from the dictionary. The mixed int 
and float really cause me trouble to convert the data efficiently. I will try 
your suggestion
 
I am really appreciate your help.
 
 
Frank Wang
 
 
> Date: Tue, 16 Oct 2007 13:52:31 -0500> From: [EMAIL PROTECTED]> To: [EMAIL 
> PROTECTED]> CC: python-list@python.org> Subject: Re: how to convert string to 
> number?> > > I have struggling to efficiently convert a string list to> > 
> number. Here is my problem. I have a file that contains lines> > such as:> > 
> > > data_1 1 1 2 3.5> > > > After I read the data from the file by using 
> readlines(), each> > line contains a string. I use the re moduel to split the 
> line> > into ['data_1', '1','1','2','3.5']. I want to create a> > dictionary 
> which contains> > > > {'data_1':[1 1 2 3.5]}> > > > The problem is I coud not 
> efficiently find a way to convert> > the string to number.> > > > Does anyone 
> know how to create such dictionary efficiently?> > Despite my Spidey-sense 
> tingling that this is a homework > assignment, as similar forms of the 
> question have popped up > several times in the last week, I supress it this 
> time.> > Paraphrasing Andy Dufresne, "Mr. Wang, do you trust your!
  file?"[1]> > If you don't trust the content of your file, you have to know 
either> > 1) how many columns of data to expect or> 2) the type each should be 
(int or float)> > If the same type for each is okay, you can use something 
like> > >>> s = {}> >>> for line in file('in.txt'):> ... k,v = 
line.rstrip('\n').split(None, 1)> ... s[k] = map(float, v.split())> ...> >>> s> 
{'data_1': [1.0, 1.0, 2.0, 3.5], 'data_4': [1.0, 1.0, 8.0, 4.5]}> > However, if 
you want them to be the actual types that evaluating > them would give (thus 
the trust-your-source issue), you can use this:> > >>> s = {}> >>> for line in 
file('in.txt'):> ... k,v = line.rstrip('\n').split(None, 1)> ... s[k] = 
map(eval, v.split())> ...> >>> s> {'data_1': [1, 1, 2, 3.5], 'data_4': [1, 1, 
8, 4.5]}> > > Both instances don't try to do anything smart with duplicate > 
keys, so if you want to append, Bruno Desthuilliers *just* posted > (in the 
last hour or so) a nice tip on this using > setdefault().append()> > -tkc> >!
  [1]http://www.finestquotes.com/movie_quotes/movie/Shawshank%20Redempt
ion/page/0.htm> > > > > 
_________________________________________________________________
【MSNビデオ】超貴重!驚きの大物対談が実現。作家 村上龍が話題のあの人に迫る
http://video.msn.co.jp/rvr/default.htm
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to