MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Reading from a file.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg56708] Re: Reading from a file.
  • From: Peter Pein <petsie at arcor.de>
  • Date: Wed, 4 May 2005 00:33:56 -0400 (EDT)
  • References: <d57h8g$pa3$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Namrata Khemka wrote:
> Hi everyone,
> 
> I have the following input file:
> 
> %Object Name : left asis
>  1      168     0.695873        6.544617        62.457849       82.505554
>  1      169     0.700040        8.332349        61.770844       82.268933
>  1      170     0.704207        9.848946        61.490948       82.065082
> 
> %Object Name : right asis
>  2      168     0.695873        -6.179786       37.250156       86.780951
>  2      169     0.700040        -4.581314       36.861102       86.754218
> 
> %Object Name : right asis
> 3      168     0.695873        -6.179786       37.250156       86.780951
> 3      169     0.695873        -6.179786       37.250156       86.780951
> 
> I want to read this file in the form of a matrix (real numbers), so
> that the matrix has the
> following (eliminate the %Object line while reading):
> 
>  1      168     0.695873        6.544617        62.457849       82.505554
>  1      169     0.700040        8.332349        61.770844       82.268933
>  1      170     0.704207        9.848946        61.490948       82.065082
>  2      168     0.695873        -6.179786       37.250156       86.780951
>  2      169     0.700040        -4.581314       36.861102       86.754218
>  3      168     0.695873        -6.179786       37.250156       86.780951
>  3      169     0.695873        -6.179786       37.250156       86.780951
> 
> 
> So the real numbers matrix is of size [7][6]
> 
> I have tried quite a few things but nothing seems to be working.
> 
> Thanks in advance for the help,
> 
> Namrata
> 
Hi Namrata,

it's not an elgant solution, but it works:

In[1]:=
readFile[name_String]:=Module[{result={},oneline,handle=OpenRead[name]},
    If[handle==$Failed,Return[$Failed]];
    While[True,
      oneline=Read[handle,String];
      If[oneline==$Failed,result=$Failed;Break[]];
      If [oneline==EndOfFile,Close[handle];Break[]];
      If[StringLength[oneline]>=1,
        If[StringTake[oneline,1]!="%",
          result=Append[result,
                DeleteCases[ToExpression[
                  StringSplit[oneline," "]],Null]];
          ]]];
    result
    ]

In[2]:=
readFile["test.txt"]//InputForm

Out[2]//InputForm=
{{1, 168, 0.695873, 6.544617, 62.457849, 82.505554},
 {1, 169, 0.70004, 8.332349, 61.770844, 82.268933},
 {1, 170, 0.704207, 9.848946, 61.490948, 82.065082},
 {2, 168, 0.695873, -6.179786, 37.250156, 86.780951},
 {2, 169, 0.70004, -4.581314, 36.861102, 86.754218},
 {3, 168, 0.695873, -6.179786, 37.250156, 86.780951},
 {3, 169, 0.695873, -6.179786, 37.250156, 86.780951}}

-- 
Peter Pein
Berlin


  • Prev by Date: Re: Reading from a file.
  • Next by Date: Re: Reading from a file.
  • Previous by thread: Re: Reading from a file.
  • Next by thread: Re: arrange lists side by side