2011-10-25 6 views
1

CSVファイルをインポートして、各行をHTMLに出力して、CSVファイルの5行ごとに5つの別々のファイルを作成する必要があります。文字列を置き換えて関数を使用してHTMLファイルを作成する方法

Hereは、CSVファイルをDLにするリンクです。ここで

は、これまでの私のコードです:

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"を置き換えることができます。 「VALUE1-7」に割り当てられている最初の事は永遠に保たれているので、

明らかhtml_str2とstrToFile2()はほとんど役に立たない..です

SO私が望む結果がmarsh.htmlという名前の5つのファイル、broflofsvkiです.html、cartman.html、mccormick.html、およびstotch.htmlの各行からの対応する情報は、上記のコードのHTMLテンプレートを使用して表示されます。

私はまだ正直であるためにリストと機能を使用する方法に混乱していますので、助けや指導は高く評価されます。誰かが私にそれを行う方法を示すことができたなら、私はGoogleで検索し、自分自身でさまざまな方法を実装しようとしていて、それを理解することができないので、もっと理解できるように感じる。私はPython 2.7.2 btwを使用しています。

+5

です。あなたのHTMLは私の目を傷つける。 – gilly3

+0

あなたは2人が同じカレッジクラスにいなければなりません。この前の記事と同様に:http://stackoverflow.com/questions/7870694/create-function-to-replace-index-in-string-with-index-in-list-then-save-those-v – serk

答えて

0

ここでは宿題のように見えるもののヒントをいくつか紹介します。

あなたはすでにcsvファイルを解析する方法を知っているので、非常に難しくなっています。さて、各行の内容を正しく使用するだけです。

関数は、同じタスクを何度も実行する必要がある場合や、同様のタスクを実行する必要がある場合に便利です。リストはデータを順番に格納するのに便利で、Pythonはそのようなシーケンスを使用するのが本当にうまいです(forステートメントで)。

So.作成するファイルの名前は文字で、csvファイルには名前を付けてください。このデータをHTMLファイルの名前として使用することができます。

次に、すべてのHTML段落は、その中のどのような値であっても同じです。そのため、値を引数とする関数を記述し、結果として値を含むhtml文字列を返すことがあります。 htmlファイルのヘッダーとフッターは、明らかに別々に生成する必要があります。

コードの書き換えを検討し、別の試みで質問を編集してください。私はこの練習をあなたに導くことを喜ばしく思います。

ところで、gilly3は正しいです:してください、あなたのhtmlタグからスタイリングを削除し、これについてCSSを検討してください。

関連する問題