Has anyone implemented the import of YAML data files into Mathematica? I suppose some sort of transformation into a nested list of rules would be the way to do it. Thanks

  • $\begingroup$ There are many YAML parsers for Java, and Mathematica has J/Link. It should be possible to use those two together. $\endgroup$ – Gustavo Delfino Sep 30 '14 at 12:46

I just wrote an importer: https://github.com/zbjornson/MYaml. It's built on SnakeYAML and supports all language-independent types.

Example 2.10 from the spec:

In[1]:= ImportString["---
   - Mark McGwire
   # Following node labeled SS
   - &SS Sammy Sosa
   - *SS # Subsequent occurrence
   - Ken Griffey", "YAML"]
Out[1]= {
          "hr" -> {"Mark McGwire", "Sammy Sosa"}, 
          "rbi" -> {"Sammy Sosa", "Ken Griffey"}

More examples in the test suite.

  • 2
    $\begingroup$ For demonstration purposes, can you show how your importer acts on a sample YAML file? $\endgroup$ – J. M. will be back soon Oct 12 '16 at 3:21
  • $\begingroup$ @J.M. good call, added an example. $\endgroup$ – ZachB Oct 12 '16 at 5:42
  • 1
    $\begingroup$ Consider posting it on packagedata.net too $\endgroup$ – Szabolcs Oct 12 '16 at 6:41
  • $\begingroup$ Another importer was written just a few days ago, see at the end of comment thread here: mathematica.stackexchange.com/q/127300/12 $\endgroup$ – Szabolcs Oct 12 '16 at 6:43
  • 1
    $\begingroup$ @JessRiedel You're correct. I'm not on a computer with M right now but can double check in the morning that a fresh install works. What version of M are you using? You can try manually loading this file to register the importer, something like << FileNameJoin[{$BaseDirectory, "SystemFiles", "Formats", "YAML", "Import.m"}]. $\endgroup$ – ZachB Sep 6 '18 at 2:21

If you cannot find a YAML importer, consider converting the YAML to JSON and importing that. It'll give you the list of rules you'd expect.


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.