質問はOPに、回答はRomanに感謝します。これを見つけるには少し検索する必要がありました。以下の情報が他のユーザーの役に立つことを願っています。
Python 2.7
参照: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.]]
"""
余談:
dtype = "| Sx"、ここでx = {1、2、3、...}のいずれか:
dtypes。PythonのS1とS2の違い
「| S1と| S2の文字列はデータ型記述子です。最初の文字列は配列が長さ1の文字列を保持し、2番目は長さ2の文字列を保持することを意味します...」
TypeError
この変更を個別に行うと、s(文字列引数が予期され、 'bytes'を取得した)になる可能性があります。あなたは慎重のpython 3にbtyesとstr(ユニコード)を区別する必要がある