我正在尝试设计一个接收两个输入的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句话来处理,
然而,我想知道是否有更好和更有效(至少只为我编写代码)的方式使它工作!
答案 0 :(得分:4)
您可以使用locals()['c{}'.format(check)]
,但如果您只是将表达式组织在适当的数据结构中,例如列表或词典,那就更好了:
c = [
re.compile(...),
re.compile(...),
...
]
c_check = c[check - 1]