MathGroup Archive 2005

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

Search the Archive

Re: Bug in Import?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg54761] Re: [mg54739] Bug in Import?
  • From: "Christoph Lhotka" <lhotka at astro.univie.ac.at>
  • Date: Tue, 1 Mar 2005 01:58:16 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

On Mon, 28 Feb 2005 03:27:49 -0500 (EST)
 Mark Fisher <mark at markfisher.net> wrote:
> (1) I export a data set that has two identitcal rows.
> (2) I use "!!" to display the stored file, showing that it contains two 
> identical rows.
> (3) I import the file, the result of which does *not* have two identical 
> rows: The first row is different from the second row.
> 
> Export["test.tsv",
>      {{"2005-01-24", "2005-02-14"},
>      { "2005-01-24", "2005-02-14"}}]
> 
> !!test.tsv -->
> 
> 2005-01-24    2005-02-14
> 2005-01-24    2005-02-14
> 
> Import["test.tsv"] -->
> 
> {{2005-01-24, 2005-02-14},
> {2005, -1, -24, 2005, -2, -14}}
> 
> Surely this is a bug.
> 
> (I sent this example to support at wolfram.com three weeks ago, but the 
> only response I've received is that it's not a bug. Frankly, I don't 
> think the tech person who responded understood the example.)
> 
> I  am using version 5.1 for Windows.
> 
> --Mark.
> 

Hi !

I am not sure, if it is a bug, but you are right, it looks strange. If you
want to have more control over, how data is stored and recieved use the
functions Write and ReadList :

You open an outputstream with OpenWrite

In[..]:=stream = OpenWrite["test.tsv"]
Out[..]:=OutputStream[test.tsv, 113]

and write something to the stream with Write (or WriteString, see the help
browser):

In[..]:=Write[stream,
  {{"2005-01-24", "2005-02-14"}, {"2005-01-24", "2005-02-14"},
        {"2005-01-24", "2005-02-14"}} // TableForm // StandardForm]
Out[..]:=test.tsv

Instead of Import, you can use ReadList (or Read, to import not the whole
file):

In[..]:=ReadList["test.tsv", {"Word", "Word"}]
Out[..]:={{2005-01-24, 2005-02-14}, {2005-01-24, 2005-02-14}, {2005-01-24,
2005-02-14}}

(where you can explicitly specify, how the data should be treated
("Word","Real","Record",etc...} and the inner structure in form of nested
lists.

So in your example {"Word","Word"} means 2 colums of type Word, which tells
Mathematica to import strings into a list of form
{{word1,word2},{word3,word4},...}

In[..]:=FullForm[%]
Out[..]:=List[List["2005-01-24", "2005-02-14"], List["2005-01-24",
"2005-02-14"], 
  List["2005-01-24", "2005-02-14"]]

Don't forget to close the output / input stream with Close after use:
In[..]:=Close[stream]

...

-- Christoph Lhotka --
University of Vienna
Institute for Astronomy
Tuerkenschanzstr. 17 
1180 Vienna, Austria
fon. +43.1.4277.518.41
mail. lhotka at astro.univie.ac.at


  • Prev by Date: Re: Polygons on spheres
  • Next by Date: Re: Changing Plot Axis Displays
  • Previous by thread: Re: Bug in Import?
  • Next by thread: Re: Re: Bug in Import?