Terima kasih OP atas pertanyaan Anda, dan Roman atas jawaban Anda. Saya harus mencari sedikit untuk menemukan ini; Saya harap yang berikut ini membantu orang lain.
Python 2.7
Lihat: 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.]]
"""
Ke samping:
dtype = "| Sx", di mana x = sembarang dari {1, 2, 3, ...}:
tipe. Perbedaan antara S1 dan S2 dalam Python
"String | S1 dan | S2 adalah deskriptor tipe data; yang pertama berarti array memiliki string dengan panjang 1, yang kedua dari panjang 2. ..."
TypeErrors (argumen string diharapkan, mendapat 'byte') jika Anda membuat perubahan ini secara terpisah. Anda perlu membedakan btyes dan str (unicode) dengan hati-hati dengan python 3.