Web2py Python根据数据库结果中的true / false拆分行

时间:2011-08-01 01:50:16

标签: python for-loop split web2py

我在web2py / python中有以下代码:

{{for row in db(db.t_problems.id==db.t_problems(request.args(0))).select(): }}

它抓住所有行,因为我需要它们。行是实际的python结果,当我打印出来时是:

>>> testFunction(2, 3, 4) True >>> testFunction(2, 1, 4) False >>> legalTriangles(-1, -1, -1) False

(当你进行原始输出时,这就是你得到的结果:)

>>> testFunction(2, 3, 4)\r\nTrue >>> testFunction(2, 1, 4)\r\nFalse >>> legalTriangles(-1, -1, -1)\r\nFalse

我需要做的是删除>>>,并在一个变量结果中使用testFunction(X,Y,Z),在另一个变量结果中使用True / False。我认为这可能有用,但循环只剥离\ r \ n,而不是将它们放在一个新变量中使用:

ios = row.f_tests.split('>>>') #results are now the testFunctions without the >>>
for io in ios:
     i = io.split("\r\n") 

结果变为:

testFunction(2, 3, 4)True testFunction(2, 1, 4)False testFunction(-1, -1, -1)False

但我需要的是......

func1 = testFunction(2, 3, 4)
res1 = True
func2 = testFunction(2, 1, 4)
res2 = False    

所以我可以把它们放进桌子里。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

在原始python中,它将是,

s = ">>> testFunction(2, 3, 4)\r\nTrue >>> testFunction(2, 1, 4)\r\nFalse >>> legalTriangles(-1, -1, -1)\r\nFalse"
for func, result in [i.splitlines() for i in s.split(">>>") if i]:
    print "<tr><td>%s</td><td>%s</td></tr>" % (func.strip(), result.strip())

结果:

<tr><td>testFunction(2, 3, 4)</td><td>True</td></tr>
<tr><td>testFunction(2, 1, 4)</td><td>False</td></tr>
<tr><td>legalTriangles(-1, -1, -1)</td><td>False</td></tr>

您应该能够将其翻译为web2py的模板或“查看”语言。我看到from here它支持for循环。