Python使用字符串名访问现有变量

2024-09-29 01:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试设计一个python函数(function\ a),它接收两个输入

基本上,我要做的是根据接收到的句子的类型(input name:'check')解析其中的重要部分(input name:'sent'))

类型有20种,每种类型都有一个正则表达式

例如,如果句子类型(即check)为2,则应该使用名为c2的正则表达式来解析句子

例如

c2 = re.compile('(?:sale|sold|provide).*?\sto\s(.*)', re.I|re.S) 

(所以我有20个正则表达式,从c1到c20)

对于摘要,如果此函数接收type(check)'n',则使用c'n'来解析句子

所以,到目前为止我试过的是:

def newpythonfunction(sent, check):
    c1 = re.compile(~~~)
    c2 = re.compile(~~!@!)
    .....
    c20 = re.compile(!@!@!#!#)
    c_check = 'c' + str(check)
    return c_check.findall(sent)

然而,正如您可能已经预料到的,由于c_check是一个字符串,它不能像c'n'一样工作

我知道我可以用20句if来处理

然而,我想知道是否有更好的和有效的方法(至少对我写代码)使它工作


Tags: 函数namere类型inputcheckfunctionsale
1条回答
网友
1楼 · 发布于 2024-09-29 01:33:55

您可以使用locals()['c{}'.format(check)],但最好是将表达式组织在适当的数据结构中,如列表或dict:

c = [
    re.compile(...),
    re.compile(...),
    ...
]
c_check = c[check - 1]

相关问题 更多 >