I am preparing data used by a command line program. It requires data in a simpliest possible format:

value_x1 value_y1
value_x2 value_y2
value_xN value_yN

For now I always need to use Python to process a datafile created in Mathematica that format, because Mathematica always adds quotes " or multiple blank spaces or tabs. How can I create a file in a format:


OpenWrite[], Write[], Export[,"Table"] etc. produce files with additional characters, and therefore are useless without processing in Python.

Edit: What if I needed to create a file in a format:

<value_x1><single_space_sign><some string character><value_y1><end_of_line_sign>
<value_x2><single_space_sign><some string character><value_y2><end_of_line_sign>
<value_xN><single_space_sign><some string character><value_yN><end_of_line_sign>

Edit 2: Proposed answer:

dat = Table[{i, Sin[i]}, {i, 4}] // N;
Export["test.dat", dat]

produces file containing following data:

{1., 0.8414709848078965}
{2., 0.9092974268256817}
{3., 0.1411200080598672}
{4., -0.7568024953079282}

Which is useless.

  • $\begingroup$ It won't work. First: arguments are misplaced. Second: it will return values in braces {}. What I am asking: is this "small variation" which I can't figure out. $\endgroup$ – Misery Apr 27 '14 at 13:34
  • $\begingroup$ it works on mac-os with 'Mathematica 9.0' $\endgroup$ – chris Apr 27 '14 at 13:37
  • $\begingroup$ As usual... make difficult things in Mathematica easily, be unable to make simpliest things. Lol $\endgroup$ – Misery Apr 27 '14 at 13:42
  • $\begingroup$ also works in mathematica 8.0 and 7.0 $\endgroup$ – chris Apr 27 '14 at 13:43
  • $\begingroup$ I use Mathematica 9 on Windows 7 and 8. It works as mentioned in post. $\endgroup$ – Misery Apr 27 '14 at 13:44


dat = Table[{i, Sin[i]}, {i, 4}] // N;
Export["test.dat", dat]

So that



(* 1. 0.8414709848078965 2. 0.9092974268256817 3. 0.1411200080598672 4. -0.7568024953079282 *)

  • $\begingroup$ It saves values in braces {} to a file: {x,y} $\endgroup$ – Misery Apr 27 '14 at 13:35
dat = Table[{i, Sin[i], Cos[i], Tan[i]}, {i, 4}] // N;

Export["test.txt", dat, "Table",  "FieldSeparators" -> " "]

  1. 0.8414709848078965 0.5403023058681397 1.5574077246549023
  2. 0.9092974268256817 -0.4161468365471424 -2.185039863261519
  3. 0.1411200080598672 -0.9899924966004454 -0.1425465430742778
  4. -0.7568024953079282 -0.6536436208636119 1.1578212823495777

Nothing new here. It's all in the documentation.

  • $\begingroup$ How can I insert there also a string so it appears without quote marks? 1. 0.84 0.54 " string" 1.55 $\endgroup$ – Misery Apr 27 '14 at 15:44
  • $\begingroup$ @misery Just put it in the dat list above. It gets exported without quotes. $\endgroup$ – Sjoerd C. de Vries Apr 27 '14 at 16:33
  • $\begingroup$ @SjoerdC.deVries do you understand why my answer not work in windows as claimed? $\endgroup$ – chris Apr 27 '14 at 18:22
  • $\begingroup$ @chris If I use a.txt extension for the file and your answer I get the behavior Misery reports. If I use .dat as extension one would think it works, but it actually uses tab characters as field separators. My guess is that Misery wrote to a .txt file which yields a different default behavior than to .dat files. By using "Table" as an explicit export format I overruled MMA's format guessing based on extension. $\endgroup$ – Sjoerd C. de Vries Apr 27 '14 at 19:10
  • $\begingroup$ @Misery This also works for me in version 7 under Windows 7. If I use e.g. dat = {{1, "foo"}, {2.2, bar}, {Pi, -7.31*^134}} there are no quotation marks around foo in the output. Are you saying this does not work on your system? $\endgroup$ – Mr.Wizard Apr 27 '14 at 19:38

I don't know if this may be the issue, but specifying "FieldSeparators" to a space causes multi-word strings to be quoted:

 ExportString[{{1, 1}, {"dog", "and cat"}}, "Table",  "FieldSeparators" -> " "]

1 1

dog "and cat"

Fix with TextDelimiters

 ExportString[{{1, 1}, {"dog", "and cat"}}, "Table", 
     "FieldSeparators" -> " ", "TextDelimiters" -> ""]

1 1

dog and cat

Obviously you now can't simply read it back in as a table recovering the original strings.

(verifed for export to files under Windows using either a ".dat" extension, or the "Table" argument)

  • $\begingroup$ The quoting of fields that contain a field separator is a standard operating procedure. If this is not done fields cannot be correctly recognized anymore. Try, for instance, saving as CSV an Excel sheet with a text field containing a comma, among other characters. $\endgroup$ – Sjoerd C. de Vries Apr 28 '14 at 17:31
  • $\begingroup$ I did find it in the docs: "By default, Export delimits text fields containing the field separator with double-quote characters." I will take that note out. $\endgroup$ – george2079 Apr 28 '14 at 17:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.