在词典中获取不包含" x"变量Python

时间:2015-03-25 05:45:54

标签: python regex dictionary

我有以下字典

字典= {' \ x85':1,' \ x84':1,' C':3828}

我想要的只是不包含数字的键的键和相应值,这是我写的但是它不起作用。我收到了一个关键错误。顺便说一下,我在顶部导入re。

new_dictionary = {}   
for key in diciontary:  
      if r"\d" not in key:  
              new_dictionary[key] += dictionary[key]
但是,这并没有起作用,我得到了一个关键错误。我认为这意味着密钥不存在,但这正是我想要的,除了数字键之外的所有东西。

在这种情况下,我的预期输出是
dictionary = {' C':3828}

虽然我认为我可能遇到麻烦,因为键是一个字符串,即使有一个数字,我认为它读了一个字符串,所以正则表达式不会在这里工作?

这实际上是一个庞大的字典的一部分,我在这里粘贴的代码适用于有数字的其他实例,但有一些是通过?那是因为实际角色被保存为不同类型吗?无论哪种方式,我都不确定如何删除它们。

3 个答案:

答案 0 :(得分:3)

您需要在搜索或匹配功能中使用正则表达式模式。所以将if条件更改为,

if not re.search(r"\d", key): 

OR

>>> dictionary = {'\x85': 1, '\x84': 1, 'C': 3828}
>>> {i:j for i,j in dictionary.items() if re.search(r'[A-Za-z]', i)}
{'C': 3828}

如果在键上找到一个字母,则会打印字典项。

答案 1 :(得分:3)

new_dictionary = {k:v for k,v in dictionary.iteritems() if k.isalpha()}

答案 2 :(得分:2)

您似乎对'\x85'这些字符串实际上是什么感到困惑。这些不一定是带有数字的字符串。他们是escape sequences

\xhh    Character with hex value hh

除非你更清楚地确定它们的问题,以及你想要在输出中保留哪些字符,否则没有人能告诉你如何剥离它们。

例如,'\x43'是另一种表示字符串' C&#39}的方法。在python中,所以以下两个dicts实际上是相等的!

>>> dict1 = {'\x85': 1, '\x84': 1, 'C': 3828}
>>> dict2 = {'\x85': 1, '\x84': 1, '\x43': 3828}
>>> dict1 == dict2
True