Python 我怎样才能把文本编译成代码行呢?
我想生成一行代码,看起来像这样:Python 我怎样才能把文本编译成代码行呢?,python,python-3.x,Python,Python 3.x,我想生成一行代码,看起来像这样: search.condition1(ape).condition2(monkey).condition3(gorilla) 这是为了在建筑中使用它,例如: jungle(search.condition1(ape).condition2(monkey).condition3(gorilla)) 问题是,我只希望字符串中包含已设置的条件(至少将始终设置一个)。我通过用户输入设置这些。那么,假设我已经收到: cond1 = cond2 = giraffe con
search.condition1(ape).condition2(monkey).condition3(gorilla)
这是为了在建筑中使用它,例如:
jungle(search.condition1(ape).condition2(monkey).condition3(gorilla))
问题是,我只希望字符串中包含已设置的条件(至少将始终设置一个)。我通过用户输入设置这些。那么,假设我已经收到:
cond1 =
cond2 = giraffe
cond3 = zebra
在这种情况下,代码行应为:
search.condition2(giraffe).condition3(zebra)
也就是说,完全排除了条件1
我尝试过这个解决方案:
searchstring = "search."
if len(cond1) > 1:
searchstring += "condition1(cond1)
else: pass
if len(cond2) > 1:
searchstring += ".condition(cond2)"
else: pass
if len(cond3) > 1:
searchstring += ".condition(cond3)"
else:pass
这可以通过字符串追加正确编译我想要的内容,但显然是作为字符串编译的
所以,当我写作的时候
jungle(searchstring)
。。。可以说,这并不能实现与原始代码相同的功能。它不是可执行的
有什么解决方案或更好的做法吗?您不想构建代码。您希望根据需要修改查询集
例如:
这相当于search.condition('foo')。condition('bar')…
。您正在对上一个条件()
的返回值调用.condition()
方法,并将最终结果用作丛林()
的参数
如果您不知何故需要调用不同的方法,而不是总是调用相同的条件()
(这在您的问题中并不完全清楚),那么您需要找出其中的逻辑,然后简单地执行以下操作:
query = getattr(query, 'name_of_method_to_call')(term)
根据需要动态构造“”方法的名称以调用“
”。顺便说一句,否则:pass
完全是多余的。谢谢。是的,方法的名称有时会有所不同。我的实际案例是构建一个类似以下内容的twitter搜索:tweetCriteria=get.manager.tweetCriteria().setUsername(“巴拉克奥巴马”).setSince(“2015-09-10”).setUntil(“2016-01-01”).setMaxTweets(1.setEmoji(“unicode”)
。我觉得整个过程都必须作为一个整体来传递,这会使您的迭代方法不合适。不?好吧,同样的想法。如果…:query=query.setUsername(…)
then,您将使用一些而不是for
循环。根据您使用的库的不同,您甚至可能不需要query=
部分。只要做if…:query.setUsername(…)
就足够了。
query = getattr(query, 'name_of_method_to_call')(term)