Merci OP pour votre question et Roman pour votre réponse. J'ai dû chercher un peu pour trouver cela; J'espère que ce qui suit aide les autres.
Python 2.7
Voir: 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.]]
"""
De côté:
dtype = "| Sx", où x = l'un des {1, 2, 3, ...}:
dtypes. Différence entre S1 et S2 en Python
"Les chaînes | S1 et | S2 sont des descripteurs de type de données; la première signifie que le tableau contient des chaînes de longueur 1, la seconde de longueur 2. ..."
TypeErrors (argument de chaîne attendu, obtenu «octets») si vous effectuez cette modification de manière isolée. Vous devez soigneusement distinguer les btyes et les str (unicode) en python 3.