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]