【发布时间】:2017-12-14 12:17:42
【问题描述】:
有很多类似的问题,但没有一个答案能解决我的问题。
我已经定义了几个解析大型数据集的函数。首先,我调用数据,然后将数据(表示为 .txt 中的行和列)组织到列表中,我将为各个数据条目编制索引。之后,我建立了我的函数,这些函数将一次处理一个列表。代码如下:
f = open(fn)
for line in iter(f):
entries = [i for i in line.split() if i]
def function_one():
if entries[0] == 150:
# do something
def function_two():
if entries[1] == 120:
# do something else
def function_three():
if len(entries) > 10:
# do something else
等等。等等。
我试图提示用户询问他们想要执行什么函数,因为每个函数返回关于数据集的不同内容。我的尝试如下:
f_call = input('Enter Function Name: ')
if f_call in locals().keys() and callable(locals()['f_call']):
locals()['f_call']()
else:
print('Function Does Not Exist')
当我运行脚本时,系统会提示我输入'Enter Function Name:',如果我输入'function_one' 并返回,则会提示prints'Function Does Not Exist'。我想看看,如果输入正确,脚本将只执行用户输入的函数。如果用户输入正确,该函数应该运行并print 解析的数据。
我也尝试使用dict 来存储函数,但没有成功。
任何帮助将不胜感激。
【问题讨论】:
-
去掉
if f_call in locals().keys() and callable(locals()['f_call'])中的“” -
@tinySandy 如前所述,我未能成功应用建议副本中提供的字典解决方案。
-
到底为什么要在循环中(重新)定义函数?让我们从那个开始......
-
@zwer 我的理解是,为了逐行处理数据集(15000 多行,可变列长度),必须使用 for iter 单独分析所有行。如果不是这样,我完全愿意接受其他建议。我对 Python 和整个编码都是全新的。
标签: python function parsing input data-structures