<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi All,<br>
    <br>
    I have an embarrassing problem, and I was wondering whether someone
    could point out where the error is. In short, I wanted to implement
    a primitive parser for importing data from a file. What I mean is
    that most of the time I need one or two columns, or perhaps some
    functions of columns from a file. I wanted to use the $ sign to
    indicate which column I want. And for all this, I was thinking of
    using a magic function. <br>
    <br>
    So, something like this<br>
    <br>
    <blockquote>%fimp test.dat x $3<br>
    </blockquote>
    <br>
    which should load the third column of the file 'test.dat' into the
    variable 'x'. And before someone asks why I need $3 in the first
    place, the answer is that I want to be able to load <br>
    <br>
    <blockquote>%fimp test.dat x $3*$3<br>
    </blockquote>
    <br>
    which should be different to <br>
    <br>
    <blockquote>%fimp test.dat x $3*3<br>
    </blockquote>
    <br>
    OK. So, I tried to implement this as a magic function, and I have
    this<br>
    <br>
    <blockquote>ip = get_ipython()<br>
      def dofimp(self, arg):<br>
      &nbsp;&nbsp;&nbsp; '''&nbsp;&nbsp;&nbsp; Fast import of data files. This function also allows
      for conversion of columns<br>
      &nbsp;&nbsp;&nbsp; '''<br>
      &nbsp;&nbsp;&nbsp; if len(arg) &gt; 0:<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; opts, arg_lst = ip.parse_options(arg, '', mode='list')<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; print arg_lst<br>
      &nbsp;&nbsp;&nbsp; <br>
      ip.define_magic('fimp', dofimp)<br>
      <br>
    </blockquote>
    If I run this in an ipython shell as <br>
    <blockquote>In [24]: %fimp foo.dat $123 <br>
      [u'foo.dat', u'123']<br>
    </blockquote>
    <br>
    i.e., the $ sign is removed. However, if I do this on the command
    line<br>
    <br>
    <blockquote>a, b = ip.parse_options('foo ($123)', '', mode='list')<br>
      print b<br>
      ['foo', '($123)']<br>
    </blockquote>
    <br>
    i.e., the $ is there. (And this is what I was after.) I don't see
    why the same two lines of code produce differing results. Any hints?
    This is ipython 0.12.<br>
    Cheers,<br>
    Zolt&aacute;n<br>
    <br>
  </body>
</html>