我需要在模块中运行几个函数,如下所示:
mylist = open('filing2.txt').read()
noTables = remove_tables(mylist)
newPassage = clean_text_passage(noTables)
replacement = replace(newPassage)
ncount = count_words(replacement)
riskcount = risk_count(ncount)
有什么方法可以一次运行所有功能吗?我应该将所有功能都变成一个大功能并运行这个大功能吗?
感谢。
答案 0 :(得分:2)
您应该在模块中创建一个新函数,该函数执行正在使用的公共序列。这将要求您确定需要哪些输入参数以及返回的结果。因此,考虑到您发布的代码,新函数可能看起来像这样 - 我只是猜测您可能感兴趣的最终结果。还要注意我在with
语句中打开文件以确保它阅读后会关闭。
def do_combination(file_name):
with open(file_name) as input:
mylist = input.read()
noTables = remove_tables(mylist)
newPassage = clean_text_passage(noTables)
replacement = replace(newPassage)
ncount = count_words(replacement)
riskcount = risk_count(ncount)
return replacement, riskcount
使用示例:
replacement, riskcount = do_combination('filing2.txt')
答案 1 :(得分:1)
如果您只是将这些行存储在Python(.py)文件中,则只需执行它们即可。
或者我在这里遗漏了什么?
创建函数也很容易调用它们:
def main():
mylist = open('filing2.txt').read()
noTables = remove_tables(mylist)
newPassage = clean_text_passage(noTables)
replacement = replace(newPassage)
ncount = count_words(replacement)
riskcount = risk_count(ncount)
main()
答案 2 :(得分:1)
据我所知,使用需要的功能组合。 Python stdlib中没有特殊功能,但您可以使用reduce
函数执行此操作:
funcs = [remove_tables, clean_text_passage, replace, count_words, risk_count]
do_all = lambda args: reduce(lambda prev, f: f(prev), funcs, args)
使用
with open('filing2.txt') as f:
riskcount = do_all(f.read())
答案 3 :(得分:0)
这是另一种方法。
您可以编写一个类似于维基百科文章功能组合的First-class composition部分所示的一般功能。请注意,与文章不同,这些功能按照compose()
调用中列出的顺序应用。
try:
from functools import reduce # Python 3 compatibility
except:
pass
def compose(*funcs, **kwargs):
"""Compose a series of functions (...(f3(f2(f1(*args, **kwargs))))) into
a single composite function which passes the result of each
function as the argument to the next, from the first to last
given.
"""
return reduce(lambda f, g:
lambda *args, **kwargs: f(g(*args, **kwargs)),
reversed(funcs))
这是一个简单的例子,说明了它的作用:
f = lambda x: 'f({!r})'.format(x)
g = lambda x: 'g({})'.format(x)
h = lambda x: 'h({})'.format(x)
my_composition = compose(f, g, h)
print my_composition('X')
输出:
h(g(f('X')))
以下是它如何应用于模块中的一系列功能:
my_composition = compose(remove_tables, clean_text_passage, replace,
count_words, risk_count)
with open('filing2.txt') as input:
riskcount = my_composition(input.read())