我从昨天开始用Python编写代码,而且没有问题。上下文是一个程序,用于读取RFID卡并使用read标记获取相关的用户名。这将在Terra板上的嵌入式Linux (Debian /Linux 7(喘息))中工作。Python版本是(Python2.7.3)。
我创建了一个字典,用键/值对填充它(两个字符串)。当我试图用一个键得到一个值时,我会得到一个我不明白的异常。
def FindTagByNumber(self, key):
global tags
value = ""
try:
print("All dictionary: " + str(self.tags))
print("Get name from key: " + str(key))
value = self.tags[key]
print("Found the name from key: " + str(value))
except Exception as ex:
print("Exception: " + str(ex))
return value其结果是:
root@ariag25:/home/python# python main.py
RFID::Initialize
RFID::Get TAG Configurations
RFID::serial port opened
All dictionary: {'4D0055AB3A': 'test1', '4D0055B6E4J': 'test2'}
Get name from key: 4D0055B6E4J
Exception: '\x024D0055B6E4J\x03'
RFID::Couldn't found the tag有人能解释一下这段代码有什么问题吗?
发布于 2014-09-10 14:35:52
您仍然包括RFID开始标志和结束标志;十六进制值为02和03的字节;这些字节是不可打印的字节,在直接打印它们时是不可见的。字典中的键中没有一个包含这些字节。
只需打印键就意味着看不到这些字节,但它们在那里:
>>> key = '\x024D0055B6E4J\x03'
>>> print key
4D0055B6E4J
>>> key
'\x024D0055B6E4J\x03'
>>> print repr(key)
'\x024D0055B6E4J\x03'repr()函数有助于使这些字节可视化。
你只需去掉这些字节:
key.strip('\x02\x03')演示:
>>> key = '\x024D0055B6E4J\x03'
>>> key.strip('\x02\x03')
'4D0055B6E4J'
>>> tags = {'4D0055AB3A': 'test1', '4D0055B6E4J': 'test2'}
>>> key in tags
False
>>> key.strip('\x02\x03') in tags
True另一种选择是将这些字节添加到字典键中,而不是:
{'\x024D0055AB3A\x03': 'test1', '\x024D0055B6E4J\x03': 'test2'}https://stackoverflow.com/questions/25768178
复制相似问题