想象一下,我们有一个字典:{‘Hello World’:value1,’Testing’:value2}
现在我们需要在字典中查找单词.密钥K需要与’Hello World’或’Testing’完全匹配才能使用.
所以让我们的text =’hello world’我们仍然希望它返回value1
那么我们如何处理文本与键的正则表达式匹配?理想情况下,我们不想迭代字典
编辑:间距方面只是一个简单的例子.文本可能会更改,以及我们想要匹配的数字和字母的组合.我们通常会使用正则表达式模式
解决方法:
你正在做的几乎是打败了dicts的效率,所以你最好自己制作类似dict的课程.这是一个简单的例子:
from re import search, I
class RegexMap(object):
def __init__(self, *args, **kwargs):
self._items = dict(*args, **kwargs)
def __getitem__(self, key):
for regex in self._items.keys():
if search(regex, key, I):
return self._items[regex]
raise KeyError
用法:
>>> rm = RegexMap({'\s*hello\s*world\s*':1, '\s*foo\s*bar\s*':2})
>>> rm['Hello World']
1
>>> rm['foobar']
2
>>> rm['baz']
Traceback (most recent call last):
File "", line 1, in
rm['baz']
File "C:\Users\dmurphy\Documents\python\_t.py", line 10, in __getitem__
raise KeyError
KeyError
>>>
从那里,您可以添加更多的dict功能.见Data Model docs.
它确实打破了你的“无迭代”条款,但如果你想要推广到正则表达式,我不确定是否有任何解决办法.
标签:python,regex,dictionary,key,normalization