Web2py Python разбивает строки на основе истинного / ложного результата базы данных - PullRequest
1 голос
/ 01 августа 2011

У меня есть следующий код в 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 голосов
/ 01 августа 2011

В сыром 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.Я вижу отсюда , что он поддерживает цикл for.

...