[Numpy-discussion] String manipulation

Pierre GM pgmdevlist at gmail.com
Tue Jul 21 02:56:28 EDT 2009


On Jul 21, 2009, at 2:42 AM, Nils Wagner wrote:
>
> Fixed-length fields are quite common e.g. in the area of
> Finite Element pre/postprocessing.
> Therefore It would be nice to have a function like
> line2array in numpy.
> Comments ?

Er, there's already something like that:
np.lib._iotools.LineSplitter

Initialize it with either a character or an integer as delimiter, and  
call your instance with a string as input. When you use an integer as  
delimiter, it corresponds to the length of your field.
eg:
 >>> s = '-1.000000E+00-1.000000E+00 1.000000E+00-1.000000E+00'
 >>> conv = np.lib._iotools.LineConverter(13)
 >>> np.array(conv(s))
array(['-1.000000E+00', '-1.000000E+00', '1.000000E+00', '-1.000000E 
+00'],
       dtype='|S13')
 >>> np.array([float(_) for _ in conv(s)])
array([-1., -1.,  1., -1.])

Note that LineSplitter is already used in np.genfromtxt:
 >>> import StringIO
 >>> np.genfromtxt(StringIO.StringIO(s),delimiter=13)
array([-1., -1.,  1., -1.])






More information about the NumPy-Discussion mailing list