आपके प्रश्न के लिए ओपी, और आपके उत्तर के लिए रोमन धन्यवाद। मुझे इसे खोजने के लिए थोड़ी खोज करनी पड़ी; मुझे आशा है कि निम्नलिखित दूसरों की मदद करता है।
पायथन 2.7
देखें: https://docs.scipy.org/doc/numpy/user/basics.io.genfreetom.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.]]
"""
पायथन 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। पायथन में S1 और S2 के बीच अंतर
"| S1 और S2 तार डेटा प्रकार के डिस्क्रिप्टर हैं; पहले का मतलब है कि लंबाई 1 का स्ट्रिंग रखती है, लंबाई का दूसरा 2. ..."
TypeError
यदि आप अलगाव में यह परिवर्तन करते हैं, तो आप s (स्ट्रिंग तर्क अपेक्षित, 'बाइट्स') प्राप्त कर सकते हैं। आपको अजगर 3 में बाइट्स और स्ट्र (यूनिकोड) को ध्यान से भेदने की आवश्यकता है