Python 工作字节值并将其转换为数字
我有一些像这样的价值观:Python 工作字节值并将其转换为数字,python,Python,我有一些像这样的价值观: b'11.9905 ; NAN ; NAN\r\n929.335 ; 1091.91 ; 0\r\n0 ; 851.954 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0\r\n11.9838 ; NAN ; NAN\r\n945.956 ; 1091.82 ; 0\r\n0 ; 836.356 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0\r\n11.9847 ; NAN ; NAN\r\n954.656 ; 1101.53 ; 0\r\n0 ; 8
b'11.9905 ; NAN ; NAN\r\n929.335 ; 1091.91 ; 0\r\n0 ; 851.954 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0\r\n11.9838 ; NAN ; NAN\r\n945.956 ; 1091.82 ; 0\r\n0 ; 836.356 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0\r\n11.9847 ; NAN ; NAN\r\n954.656 ; 1101.53 ; 0\r\n0 ; 839.958 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0\r\n'
我需要把它转换成数值
我现在正在做的是:
# t is the byte showed before
trama = str(t).replace('\\r\\n',';')
trama = trama.replace(' ','')
trama = trama.strip("b\'")
values = trama.split(';')
# Appears an empty value at the end. I delete it
if len(values[-1]) == 0:
values.pop(-1)
final = []
for i in values:
try:
v = int(i)
except:
v = float(i)
final.append(v)
print(final)
实际上它正在工作,但我很确定有一种简单的方法可以做到这一点,直接转换字节,t
。有人知道怎么做吗
PS:我是否正确使用了
NAN
值?既然您有字节,我会尝试以下方法:
sample_data = b'11.9905 ; NAN ; NAN\r\n929.335 ; 1091.91 ; 0\r\n0 ; 851.954 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0\r\n11.9838 ; NAN ; NAN\r\n945.956 ; 1091.82 ; 0\r\n0 ; 836.356 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0\r\n11.9847 ; NAN ; NAN\r\n954.656 ; 1101.53 ; 0\r\n0 ; 839.958 ; NAN\r\n0 ; 0 ; 0\r\n0 ; 0\r\n'
numbers = [
float(i.strip().decode()) for i in sample_data.split()
if i.strip().decode() not in [";", "NAN"]
]
print(numbers)
输出:
[11.9905, 929.335, 1091.91, 0.0, 0.0, 851.954, 0.0, 0.0, 0.0, 0.0, 0.0, 11.9838, 945.956, 1091.82, 0.0, 0.0, 836.356, 0.0, 0.0, 0.0, 0.0, 0.0, 11.9847, 954.656, 1101.53, 0.0, 0.0, 839.958, 0.0, 0.0, 0.0, 0.0, 0.0]