numpy - 在Python3中,python StringIO

  显示原文与译文双语对照的内容
112 4

我正在使用 python 3.2.1,無法導入 StringIO 模塊。我使用 io.StringIO 並且它工作正常,但我不能將它與類似這樣的numpygenfromtxt 一起使用:

x="1 3n 4.5 8" 
numpy.genfromtxt(io.StringIO(x))

出現了以下錯誤:

TypeError: Can't convert 'bytes' object to str implicitly 

當我寫 import StringIO的時候

ImportError: No module named 'StringIO'
时间:原作者:0个回答

87 3

當我寫 import StringIO時,它表示沒有這樣的模塊。

中,在 python 3.0中新增的內容是:

StringIOcStringIO 模塊已經消失。相反,導入 io 模塊,並分別對文本和數據使用 io.StringIO 或者 io.BytesIO

修復某些 python 2代碼的可能有用的方法也可以在 python 3 ( 警告 emptor ) 中工作:

try:
 from StringIO import StringIO
except ImportError:
 from io import StringIO

注意:這個例子可能與問題的主要問題 tangential,只包含在一般處理缺少的模塊時的問題。對於更直接的解決方案,消息TypeError: Can't convert 'bytes' object to str implicitly,請參見這個答案。

原作者:
78 3

在 python 3 numpy.genfromtxt 上需要位元組流。使用以下命令:

numpy.genfromtxt(io.BytesIO(x.encode()))
原作者:
105 5

感謝你的問題,Roman代表你的答案。我得搜索一下才能找到這一點,希望下面能幫助別人。

python 2.7

請參閱:https://docs.scipy.org/doc/numpy-dev/user/basics.io.genfromtxt.html

import numpy as np
from StringIO import StringIO
data ="1, abc, 2n 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, 2n 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字元串是數據類型描述符;第一個表示 array 長度為 1的字元串,長度為 2.。"

原作者:
...