Как заменить строки и создать HTML-файлы с функциями - PullRequest
1 голос
/ 25 октября 2011

У меня есть файл CSV, который я должен импортировать, взять каждую строку файла и распечатать в HTML, чтобы создать 5 отдельных файлов для каждых 5 строк в файле CSV.

Здесь - это ссылка на DL CSV-файл.

Вот мой код:

import csv

original = file('southpark.csv', 'rU')

reader = csv.reader(original)

BigList = []

html_str = """<html>
<P CLASS="western" ALIGN=CENTER STYLE="margin-top: 0.08in; margin-bottom: 0.25in">
<FONT SIZE=7 STYLE="font-size: 60pt">VALUE1</FONT></P>
<P CLASS="western" ALIGN=CENTER STYLE="margin-top: 0.08in; margin-bottom: 0.25in">
<FONT SIZE=7 STYLE="font-size: 36pt">VALUE2</FONT></P>
<P CLASS="western" ALIGN=CENTER STYLE="margin-top: 0.08in; margin-bottom: 0.25in">
<FONT SIZE=7 STYLE="font-size: 36pt"> VALUE3</FONT></P>
<P CLASS="western" ALIGN=CENTER STYLE="margin-top: 0.08in; margin-bottom: 0.25in">
<FONT SIZE=6 STYLE="font-size: 28pt"> VALUE4</FONT></P>
<P CLASS="western" ALIGN=CENTER STYLE="margin-top: 0.08in; margin-bottom: 0.25in">
<FONT SIZE=6 STYLE="font-size: 28pt"> VALUE5</FONT></P>
<P CLASS="western" ALIGN=CENTER STYLE="margin-top: 0.08in; margin-bottom: 0.25in">
<FONT SIZE=6 STYLE="font-size: 28pt"> VALUE6</FONT></P>
<P CLASS="western" ALIGN=CENTER STYLE="margin-top: 0.08in; margin-bottom: 0.25in">
<FONT SIZE=6 STYLE="font-size: 28pt"> VALUE7</FONT></P>
</html>"""

for row in reader:
    BigList.append(row)
print BigList

html_str = html_str.replace('VALUE1', BigList[0][0])
html_str = html_str.replace('VALUE2', BigList[0][1])
html_str = html_str.replace('VALUE3', BigList[0][2])
html_str = html_str.replace('VALUE4', BigList[0][3])
html_str = html_str.replace('VALUE5', BigList[0][4])
html_str = html_str.replace('VALUE6', BigList[0][5])
html_str = html_str.replace('VALUE7', BigList[0][6])

html_str2 = html_str.replace('VALUE1', BigList[1][0])
html_str2 = html_str.replace('VALUE2', BigList[1][1])
html_str2 = html_str.replace('VALUE3', BigList[1][2])
html_str2 = html_str.replace('VALUE4', BigList[1][3])
html_str2 = html_str.replace('VALUE5', BigList[1][4])
html_str2 = html_str.replace('VALUE6', BigList[1][5])
html_str2 = html_str.replace('VALUE7', BigList[1][6])

def strToFile():
    fout = open("marsh.html", "w")
    fout.write(html_str)
    fout.close()

def strToFile2():
    fout = open("broflovski.html", "w")
    fout.write(html_str2)
    fout.close()

strToFile()
strToFile2()

В результате создается файл "marsh.html", который отображает первую строку файла CSV. Чего я не могу понять, так это как зациклить его в функциях def, чтобы я мог заменить каждое «VALUE1-7», потому что сейчас сохраняется только первая строка.

Очевидно, что html_str2 и strToFile2 () в значительной степени бесполезны, поскольку первое, что присваивается «VALUE1-7», сохраняется навсегда ..

ТАК что я хочу получить 5 файлов с именами marsh.html, broflofsvki.html, cartman.html, mccormick.html и stotch.html со всей соответствующей информацией из соответствующих строк, отображаемых с использованием шаблона HTML в приведенном выше коде. .

Я все еще не понимаю, как использовать списки и функции, если честно, поэтому любая помощь или руководство высоко ценится. Если бы кто-то мог показать мне, как это сделать, я чувствовал бы, что понял бы больше, поскольку я искал через Google и пытался реализовать различные методы самостоятельно и не могу понять это. Я использую Python 2.7.2 между прочим.

1 Ответ

0 голосов
/ 26 октября 2011

Вот несколько советов о том, что выглядит как домашнее задание.

Вы уже знаете, как анализировать CSV-файл, поэтому вы проделали довольно сложную работу. Теперь вам просто нужно правильно использовать содержимое каждой строки.

Функция полезна, когда вам нужно выполнить одну и ту же задачу несколько раз или выполнить похожие задачи. Список полезен для хранения данных в последовательности, и Python действительно хорош в использовании таких последовательностей (с оператором for).

Итак. Файлы, которые вы хотите создать, должны быть названы символами, а у вас есть их имена в файле csv; так что вы можете использовать эти данные в качестве имени для ваших HTML-файлов.

Тогда все ваши html-абзацы одинаковы независимо от значения внутри них, поэтому, возможно, вы могли бы написать функцию, которая бы принимала значение в качестве аргумента и возвращала бы строку html, содержащую значение в качестве результата. Очевидно, что верхний и нижний колонтитулы html-файла должны создаваться отдельно.

Пожалуйста, рассмотрите возможность переписать свой код и отредактируйте свой вопрос с другой попыткой. Я буду рад помочь вам в выполнении этого упражнения.

Кстати, gilly3 прав: пожалуйста, удалите стилизацию из ваших HTML-тегов и рассмотрите css для этого.

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