Python Numpy I/O:将%百分比转换为介于0和1之间的浮点值 我想做的事情是:

Python Numpy I/O:将%百分比转换为介于0和1之间的浮点值 我想做的事情是:,python,numpy,python-3.5,converters,Python,Numpy,Python 3.5,Converters,将表示百分比xx%的字符串转换为介于0和1之间的浮点值 我的代码: 我的问题是: 在一般情况下,%的百分比将打印为nan。由于故障数据类型为float,因此无法转换%中的百分比。因此,我尝试了转换方法 但是,当我运行代码时,会出现以下错误: convertfunc = lambda x: float(x.strip("%"))/100 # remove % and return the value in float (between 0 and 1) TypeErro

将表示百分比xx%的字符串转换为介于0和1之间的浮点值

我的代码: 我的问题是: 在一般情况下,%的百分比将打印为nan。由于故障数据类型为float,因此无法转换%中的百分比。因此,我尝试了转换方法

但是,当我运行代码时,会出现以下错误:

convertfunc = lambda x: float(x.strip("%"))/100     # remove % and return the value in float (between 0 and 1)
TypeError: a bytes-like object is required, not 'str'
有人知道这里有什么问题吗?(我正在使用python3.5)

谢谢您的回答。

您不能用
str
对象即
'%'拆分类似字节的对象。
。将a
b
附加到strip字符串的开头,使其成为bytes对象

convertfunc = lambda x: float(x.strip(b"%"))/100
#                                     ^

b = np.genfromtxt(io.BytesIO(data.encode()), names = names, delimiter = ",", converters = {1:convertfunc})

print(b)
# array([(1.0, 0.023, 45.0), (6.0, 0.789, 0.0)],
# dtype=[('i', '<f8'), ('p', '<f8'), ('n', '<f8')])

非常感谢你。这确实回答了我的问题。
convertfunc = lambda x: float(x.strip(b"%"))/100
#                                     ^

b = np.genfromtxt(io.BytesIO(data.encode()), names = names, delimiter = ",", converters = {1:convertfunc})

print(b)
# array([(1.0, 0.023, 45.0), (6.0, 0.789, 0.0)],
# dtype=[('i', '<f8'), ('p', '<f8'), ('n', '<f8')])
>>> type('%')
<class 'str'>
>>> type(b'%')
<class 'bytes'>