Grazie OP per la tua domanda e Roman per la tua risposta. Ho dovuto cercare un po 'per trovare questo; Spero che quanto segue aiuti gli altri.
Python 2.7
Vedi: https://docs.scipy.org/doc/numpy/user/basics.io.genfromtxt.html
import numpy as np
from StringIO import StringIO
data = "1, abc , 2\n 3, xxx, 4"
print type(data)
"""
<type 'str'>
"""
print '\n', np.genfromtxt(StringIO(data), delimiter=",", dtype="|S3", autostrip=True)
"""
[['1' 'abc' '2']
['3' 'xxx' '4']]
"""
print '\n', type(data)
"""
<type 'str'>
"""
print '\n', np.genfromtxt(StringIO(data), delimiter=",", autostrip=True)
"""
[[ 1. nan 2.]
[ 3. nan 4.]]
"""
Python 3.5:
import numpy as np
from io import StringIO
import io
data = "1, abc , 2\n 3, xxx, 4"
#print(data)
"""
1, abc , 2
3, xxx, 4
"""
#print(type(data))
"""
<class 'str'>
"""
#np.genfromtxt(StringIO(data), delimiter=",", autostrip=True)
# TypeError: Can't convert 'bytes' object to str implicitly
print('\n')
print(np.genfromtxt(io.BytesIO(data.encode()), delimiter=",", dtype="|S3", autostrip=True))
"""
[[b'1' b'abc' b'2']
[b'3' b'xxx' b'4']]
"""
print('\n')
print(np.genfromtxt(io.BytesIO(data.encode()), delimiter=",", autostrip=True))
"""
[[ 1. nan 2.]
[ 3. nan 4.]]
"""
A parte:
dtype = "| Sx", dove x = uno qualsiasi di {1, 2, 3, ...}:
dtypes. Differenza tra S1 e S2 in Python
"Le stringhe | S1 e | S2 sono descrittori di tipi di dati; il primo significa che l'array contiene stringhe di lunghezza 1, il secondo di lunghezza 2. ..."
TypeErrors (argomento stringa previsto, ottenuto 'byte') se apporti questa modifica in modo isolato. Devi distinguere attentamente btyes e str (unicode) in Python 3.