我有以下字典
字典= {' \ 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}
虽然我认为我可能遇到麻烦,因为键是一个字符串,即使有一个数字,我认为它读了一个字符串,所以正则表达式不会在这里工作?
这实际上是一个庞大的字典的一部分,我在这里粘贴的代码适用于有数字的其他实例,但有一些是通过?那是因为实际角色被保存为不同类型吗?无论哪种方式,我都不确定如何删除它们。
答案 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