Python使用字符串名

时间:2018-02-08 08:08:58

标签: python function object

我正在尝试设计一个接收两个输入的python函数(function_A);

基本上,我要做的是根据收到的句子(输入名称:'sent')根据其类型解析重要部分(输入名称:'check')

类型是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句话来处理,

然而,我想知道是否有更好和更有效(至少只为我编写代码)的方式使它工作!

1 个答案:

答案 0 :(得分:4)

您可以使用locals()['c{}'.format(check)],但如果您只是将表达式组织在适当的数据结构中,例如列表或词典,那就更好了:

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