当前位置: 首页 > 面试题库 >

如何从Python读取Perl数据结构?

西门逸仙
2023-03-14
问题内容

我经常看到人们使用Perl数据结构代替配置文件。即一个仅包含以下内容的独立文件:

%config = (
    'color' => 'red',
    'numbers' => [5, 8],
    qr/^spam/ => 'eggs'
);

使用纯Python将这些文件的内容转换为等效于Python的数据结构的最佳方法是什么?目前,我们可以假设没有要评估的真实表达式,只有结构化数据。


问题答案:

不知道用例是什么。这是我的假设:您将要进行一次从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 => valuevariable : 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'


 类似资料:
  • 问题内容: 嗨,我习惯了SQL,但是我需要从HBase表读取数据。任何帮助都会很棒。一本书,或者只是一些示例代码,可以从表中读取。有人说使用扫描仪可以解决问题,但我不知道如何使用。 问题答案: 从网站:

  • 问题内容: 当我们处理本地文件时,我想做的事情很简单,但是当我尝试使用远程URL时,问题就来了。 基本上,我试图从URL提取的文件中创建一个PIL图像对象。当然,我总是可以只获取URL并将其存储在临时文件中,然后将其打开到图像对象中,但这感觉效率很低。 这是我所拥有的: 它抱怨说不可用,所以我尝试了这个: 但这也不起作用。有没有更好的方法可以执行此操作,还是可以将这种方式写入临时文件? 问题答案:

  • 问题内容: 我正在与几个音乐播放器集成。目前,我最喜欢的是灵动的。 在新版本中,他们正在将数据库格式从SQLite3迁移到内部Pickle格式。我想知道是否有一种方法可以访问泡菜格式的文件,而无需手工进行逆向工程。 我知道有cPickle python模块,但是我不知道它是否可以直接从C调用。 问题答案: http://www.picklingtools.com/ 有一个名为PicklingToo

  • 我是火花的新手,我找不到这个...我有许多拼花地板文件上传到的位置: 此文件夹的总大小为,。如何将这些文件分块并读取到一个数据包中,如何将所有这些文件加载到一个数据包中? 错误:

  • 本文向大家介绍Python如何读取MySQL数据库表数据,包括了Python如何读取MySQL数据库表数据的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 代码: 结果如图: 以上就是本文的全部内容,希望对大

  • 我有一个非常简单的问题:使用Python从txt文件中读取不同条目的最有效方法是什么? 假设我有一个文本文件,如下所示: 在C中,我会这样做: 用Python做这样的事情最好的方法是什么?以便将每个值存储到不同的变量中(因为我必须在整个代码中使用这些变量)。 提前感谢!