首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从给定键获取值时发生python字典错误

从给定键获取值时发生python字典错误
EN

Stack Overflow用户
提问于 2014-09-10 14:33:53
回答 1查看 130关注 0票数 0

我从昨天开始用Python编写代码,而且没有问题。上下文是一个程序,用于读取RFID卡并使用read标记获取相关的用户名。这将在Terra板上的嵌入式Linux (Debian /Linux 7(喘息))中工作。Python版本是(Python2.7.3)。

我创建了一个字典,用键/值对填充它(两个字符串)。当我试图用一个键得到一个值时,我会得到一个我不明白的异常。

代码语言:javascript
复制
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

其结果是:

代码语言:javascript
复制
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

有人能解释一下这段代码有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-10 14:35:52

您仍然包括RFID开始标志和结束标志;十六进制值为02和03的字节;这些字节是不可打印的字节,在直接打印它们时是不可见的。字典中的键中没有一个包含这些字节。

只需打印键就意味着看不到这些字节,但它们在那里:

代码语言:javascript
复制
>>> key = '\x024D0055B6E4J\x03'
>>> print key
4D0055B6E4J
>>> key
'\x024D0055B6E4J\x03'
>>> print repr(key)
'\x024D0055B6E4J\x03'

repr()函数有助于使这些字节可视化。

你只需去掉这些字节:

代码语言:javascript
复制
key.strip('\x02\x03')

演示:

代码语言:javascript
复制
>>> key = '\x024D0055B6E4J\x03'
>>> key.strip('\x02\x03')
'4D0055B6E4J'
>>> tags = {'4D0055AB3A': 'test1', '4D0055B6E4J': 'test2'}
>>> key in tags
False
>>> key.strip('\x02\x03') in tags
True

另一种选择是将这些字节添加到字典键中,而不是:

代码语言:javascript
复制
{'\x024D0055AB3A\x03': 'test1', '\x024D0055B6E4J\x03': 'test2'}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25768178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档