-3

我想将包含 perl 中散列的散列转换为 python。这是它的一段 perl 代码:

our %types = (
  string => {
    db_type     => 'string',
    hint        => 'string',
    pattern     => qr|^(.+)$|,
    format      => q( $1 )
  },
  boolean => {
    db_type     => 'boolean',
    hint        => 'yes|no',
    pattern     => qr|^([yn])|i,
    check       => q( $1 ),
    format      => q( ($1 =~ /^y/) ? 'yes' : 'no' )
  }
)

这是我用 Python 编写的:

types = [
    'string': {
        'db_type': 'string',
        'hint': 'string',
        'pattern': re.compile(r'^(.+)$'),
        # 'format':,
    },
    'boolean': {
        'db_type': 'boolean',
        'hint': 'yes|no',
        'pattern': re.compile(r'^([yn])', re.IGNORECASE),
        #'check': HOW SHOULD I TRANSFORM THIS PART?,
        #'format': HOW SHOULD I TRANSFORM THIS PART?,
    },
]

我不知道应该如何转换format 和 check keys 的值。任何帮助都会得到帮助。

4

1 回答 1

1

$1 是存在于计算的正则表达式的第一个括号中的文本部分。

您需要重写整个机制,但是类似于 .group(1)for$1和 also

"yes" if object.group(1) == "y" else "no" 

为了

($1 =~ /^y/) ? 'yes' : 'no'

应该做的工作。

于 2020-05-03T15:05:04.867 回答