Python: для проблемы цикла - PullRequest
0 голосов
/ 12 марта 2010

У меня есть страница PSP со встроенным HTML. Мне нужно поместить еще один цикл for, чтобы я мог вставить другой% s рядом с background-color:, который вставит соответствующий цвет в таблицу HTML.

Например, мне нужно вставить for z in colours, чтобы он мог зацикливаться на списке цветов и вставлять правильный цвет. Когда бы я ни пытался вставить цикл for, кажется, что он не работает, он чаще всего окрашивает каждую ячейку таблицы 60 раз, затем переходит на следующую ячейку, повторяется и вылетает из браузера.

Цвета хранятся в таблице, называемой цветами.

код ниже:

<table>
<%
s = ''.join(aa[i] for i in table if i in aa)
for i in range(0, len(s), 60):
    req.write('<tr><td><TT>%04d</td>' % (i+1));
    for k in s[i:i+60]:
            req.write('<TT><td><TT><font style="background-color:">%s<font></td>' % (k));
    req.write('</TT></tr>')
#end
%>
</table>

----- EDITED -----

Подключен код, предоставленный ebo, он раскрашивает все таблицы в один цвет. Список цветов содержит множество цветов, например, colour = ['yellow', 'yellow', 'yellow', 'yellow', 'red', 'red', 'red', 'red']

<table>
<%
s = ''.join(aa[i] for i in table if i in aa)
for i in range(0, len(s), 60):
    req.write('<tr><td>%04d</td>' % (i+1));
    for j, k in enumerate(s[i:i+60]):
        req.write('<td><font style="background-color:%s;">%s<font></td>' % (colour[j % len(colour)], k));
    req.write('</tr>')
#end
%>
</table>

1 Ответ

1 голос
/ 12 марта 2010

Полагаю, вам нужен один цвет для каждого столбца. Лучше всего использовать перечисление:

s = ''.join(aa[i] for i in table if i in aa)
for i in range(0, len(s), 60):
    req.write('<tr><td>%04d</td>' % (i+1))
    for j, k in enumerate(s[i:i+60]):
        req.write('<td style="background-color: %s;">%s</td>' % 
                     (colours[j % len(colours)], k))
    req.write('</tr>')

Я удалил все теги TT. Они были в основном неверны, либо не закрыты, либо охватывают другие элементы.

Обновление Это должно сделать. Посмотрите на источник, если каждое поле заполнено правильно. Также скачайте Firebug и посмотрите на разобранный HTML-код. Он может отличаться в зависимости от других ошибок html.

colour = ["red", "red", "green", "yellow"]

print "<table>"
s = '1234567890'
for i in range(0, len(s), 60):
    print('<tr><td>%04d</td>' % (i+1));
    for j, k in enumerate(s[i:i+60]):
        print('<td><font style="background-color:%s;">%s<font></td>' % (colour[j % len(colour)], k));
    print('</tr>')
print "</table>"

Я передал вывод следующего кода в html-файл и открыл его. Работает как положено.

python table.py > table.html
firefox table.html

Я полагаю, в вашем коде есть некоторые дополнительные ошибки, которые могут испортить парсинг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...