Dictionary KeyError при использовании строки, прочитанной с последовательного устройства

Я читаю последовательные данные, которые являются ключом для словаря Python. Когда я читаю последовательные данные, они проходят как поток байтов, который я конвертирую в строку. Когда я использую эту строку для поиска ключа словаря, я получаю KeyError.

Я попытался найти тот же ключ, введя ключ вручную, и это отлично вернуло бы значение. Мой код выглядит следующим образом, любая помощь приветствуется!

plates_id = {'TestCylinder100umHard': 8, 'TestCube100umHard': 7, 'MotorMount100umHard': 6, 'InnerShaft100umHard': 5, 'DriveSleeve100umHard': 4, 'DrivePulley100umHard': 3, 'BearingSleeve100umHard': 2, 'Quad': 1, 'Auto Calibration Plate': 0}

s_bytes_new = ser.inWaiting()
s_new = str(ser.read(s_bytes_new))
printing_plate = plates_id[s_new]
print(printing_plate)

Что дает эту ошибку:

Traceback (most recent call last):
  File "C:/pythonProjects/nanoDLP/touchInterface/printTest.py", line 66, in <module>
  printing_plate = plates_id[s_new]
KeyError: "'Auto Calibration Plate'"

Дайте мне знать, если вам нужна дополнительная информация. Спасибо,

Дилан


person Dylan144GT    schedule 01.11.2017    source источник
comment
Вы отладили repr(s_new), чтобы увидеть, есть ли какие-то скрытые пробельные символы, и попытались лишить их: s_new = s_new.strip()?   -  person schwobaseggl    schedule 01.11.2017


Ответы (1)


Используйте .decode() вместо str, чтобы преобразовать байты в str

s_new  = ser.read(s_bytes_new).decode()
person daemon24    schedule 01.11.2017
comment
Вау, это легко исправить! Благодарю вас! - person Dylan144GT; 01.11.2017