代码之家  ›  专栏  ›  技术社区  ›  Dylan144GT

使用从串行设备读取的字符串时出现字典键错误

  •  1
  • Dylan144GT  · 技术社区  · 7 年前

    我正在阅读序列数据,这是Python字典的关键。当我读取串行数据时,它以字节流的形式通过,我将其转换为字符串。当我使用该字符串搜索字典键时,我得到一个keyrerror。

    我试图通过手动输入键来搜索同一个键,这将完美地返回值。我的代码如下,感谢您的帮助!

    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'"
    

    如果你需要更多信息,请告诉我。谢谢

    迪伦

    1 回复  |  直到 7 年前
        1
  •  0
  •   daemon24    7 年前

    使用decode()代替str,将字节转换为str

    s_new  = ser.read(s_bytes_new).decode()