不知道用例是什么。这是我的假设:您将要进行一次从Perl到Python的转换。
Perl有这个
%config = ( 'color' => 'red', 'numbers' => [5, 8], qr/^spam/ => 'eggs');
在Python中,
config = { 'color' : 'red', 'numbers' : [5, 8], re.compile( "^spam" ) : 'eggs'}所以,我想这是一堆可替换的RE
%variable = (
与variable = {);
与}
variable => value
与variable : value
qr/.../ =>
与re.compile( r"..." ) : value
但是,
dict使用正则表达式作为哈希键,Python的内置功能不会做任何异常。为此,您必须编写自己的的子类
dict,并进行重写
__getitem__以分别检查REGEX键。
class PerlLikeDict( dict ): pattern_type= type(re.compile("")) def __getitem__( self, key ): if key in self: return super( PerlLikeDict, self ).__getitem__( key ) for k in self: if type(k) == self.pattern_type: if k.match(key): return self[k] raise KeyError( "key %r not found" % ( key, ) )这是使用类似Perl的字典的示例。
>>> pat= re.compile( "hi" )>>> a = { pat : 'eggs' } # native dict, no features.>>> x=PerlLikeDict( a )>>> x['b']= 'c'>>> x{<_sre.SRE_Pattern object at 0x75250>: 'eggs', 'b': 'c'}>>> x['b']'c'>>> x['ji']Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 10, in __getitem__KeyError: "key 'ji' not found">>> x['hi']'eggs'


