title: Variable/unknown length string/unicode dtype in numpy
body: <p>Is it possible to somehow load an array with a text field of unknown field length?</p>
  
  <p>I figured out how to pass <code>dtype</code> to get string into it. However, with out specifying length i just get <code>U0</code>. Type which seems not to be able to hold any data. E.g:</p>
  
  <pre><code>data = io.StringIO("test data lololol\ntest2 d4t4 ololol")
  &gt;&gt;&gt; ar = numpy.loadtxt(data, dtype=[("1",str), ("2",'S'), ("3",'S')])
  &gt;&gt;&gt; ar
  array([('', b'', b''), ('', b'', b'')], 
        dtype=[('1', '&lt;U0'), ('2', '|S0'), ('3', '|S0')])
  </code></pre>
  
  <p>When I change to mode with specified size I get input:</p>
  
  <pre><code>&gt;&gt;&gt; data.seek(0)
  0
  &gt;&gt;&gt; numpy.loadtxt(data, dtype=[("1",(str,30)), ("2",(str,30)), ("3",('S',30))])
  array([("b'test'", "b'data'", b'lololol'),
         ("b'test2'", "b'd4t4'", b'ololol')], 
        dtype=[('1', '&lt;U30'), ('2', '&lt;U30'), ('3', '|S30')])
  </code></pre>
  
  <p>I'd be fine with either <code>S</code> or <code>U</code> probably. The field in my case is supposed to be used to hold set of textual flags. Something like linux environmental variables. Thus, preallocating large space just in case seems like a big waste. Especially when number of rows goes into millions.</p>
  
  <p>I do understand, or have ideas, where such design can come from. Like constructing a <code>struct</code> like object that holds whole row in continuous memory block. However, I thought maybe there could a way to make it keep like a pointer in case of strings.</p>
  
  <p>Is it possible?</p>