我在与PySerial和Python的问题(3.3):我运行的代码(现在,这只是一个简单的测试用例)如下:PySerial和readline()返回二进制字符串 - 转换为常规字母数字字符串?
ser = serial.Serial('/dev/ttyACM0', 115200)
result = ser.readline()
parsed = result.split(",")
它提供了以下错误:
TypeError: type str doesn't support the buffer API
我的愚蠢的错误是什么?我认为我已经追踪到PySerial的readline正在返回一个二进制字符串(python 3中的新增内容?),并且在对二进制字符串运行时字符串操作“split”失败 - 它运行正常,如果您运行此操作:
'1234, asdf, 456, jkl'.split(",")
这给预期:
['1234', 'asdf', '456', jkl']
但随后在运行:
b'1234, asdf, 456, jkl'.split(",")
给上述错误。是否有不同的readline方法可供使用?我应该使用read来编写自己的代码(并且直到它看到/ r/n为止),或者我可以轻松转换为满足str.isalnum()的字符串吗?谢谢!
我不认为这就是我要找的--readline返回的值只是一个“b-flagged”字符串:'code'b'asdf,asdf,asdf''code' - 失败str .isalnum()我真的只需要去掉前面的“b” - 它用ASCII表示,它只是一个二进制标志?我想我错过了一些东西。我没有看到看起来这样做的binascii方法。 –
好,所以我的回答错了,但我已经编辑它,包括希望工作的解决方案! – Enthral
非常感谢你! –