Re: import FortranForm back
- To: mathgroup at smc.vnet.net
- Subject: [mg90620] Re: import FortranForm back
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Wed, 16 Jul 2008 06:29:53 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <g5hthn$jad$1@smc.vnet.net>
jyan.stat at gmail.com wrote: > I have a file saved in FortranForm from some previous work. Now I'd > like to read it back in and continue working on it. For example, > > foo := Table[a i, {i, 1, 4}] > Export["foo", FortranForm[foo], "Table"] > Import["foo", "Table"] > foo > > Note that the last two lines are not the same. How can I recover foo > from Import? Thanks in advance. Using *FullForm[]* on the above example it is relatively easy to spot that the imported data are not in a correct format to be fully evaluated by Mathematica: In[1]:= foo = Table[a i, {i, 1, 4}]; Export["foo", FortranForm[foo], "Table"]; foo2 = Import["foo", "Table"]; foo // FullForm foo2 // FullForm foo2 === foo Out[4]//FullForm= List[a, Times[2, a], Times[3, a], Times[4, a]] Out[5]//FullForm= List[List["List(a,2*a,3*a,4*a)"]] Out[6]= False So you must massage the imported data to put them into a syntactically correct input form: In[7]:= ToExpression[StringReplace[Sequence @@ Flatten[foo2], {"(" -> "[", ")" -> "]"}]] % === foo Out[7]= {a, 2 a, 3 a, 4 a} Out[8]= True Anyway, it is more likely that what you want is along the lines, In[9]:= foo = Table[a i, {i, 1, 4}]; Export["foo", FortranForm /@ foo, "Table"]; foo2 = ToExpression @@@ Import["foo", "Table"]; foo // FullForm foo2 // FullForm foo2 === foo Out[12]//FullForm= List[a, Times[2, a], Times[3, a], Times[4, a]] Out[13]//FullForm= List[a, Times[2, a], Times[3, a], Times[4, a]] Out[14]= True Regards, -- Jean-Marc