[SciPy-user] Print unicode objects in object arrays
Robert Kern
robert.kern at gmail.com
Tue May 26 18:43:22 EDT 2009
On Tue, May 26, 2009 at 17:33, <mmanns at gmx.net> wrote:
> Hi
>
> Is there a way of printing unicode objects that are inside an object
> array?
>
> $ python
> Python 2.5.4 (r254:67916, Feb 17 2009, 20:16:45)
> [GCC 4.3.3] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> u = [u'\u201e']
>>>> u
> [u'\u201e']
>>>> import numpy
>>>> a = numpy.array(u, dtype="O")
>>>> a
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "/usr/lib/python2.5/site-packages/numpy/core/numeric.py", line
> 1088, in array_repr ', ', "array(")
> File "/usr/lib/python2.5/site-packages/numpy/core/arrayprint.py",
> line 287, in array2string separator, prefix)
> File "/usr/lib/python2.5/site-packages/numpy/core/arrayprint.py",
> line 216, in _array2string _summaryEdgeItems, summary_insert)[:-1]
> File "/usr/lib/python2.5/site-packages/numpy/core/arrayprint.py",
> line 333, in _formatArray word = format_function(a[-1])
> UnicodeEncodeError: 'ascii' codec can't encode character u'\u201e' in
> position 0: ordinal not in range(128)
>>>> numpy.__version__
> '1.2.1'
Hmm, looks like we use str() for object arrays instead of repr(). That
is unfortunate. You can work around this with a hack:
In [18]: class array(np.ndarray):
....: _format = repr
....:
....:
In [20]: a = empty(1, object)
In [21]: a[0] = u'\u201e'
In [22]: a.view(array)
Out[22]: array([u'\u201e'], dtype=object)
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
-- Umberto Eco
More information about the SciPy-User
mailing list