2011-10-22 9 views
2

基本的に私の問題は次のとおりです。私はSouthpark文字に関する情報を持つCSV Excelファイルを持っています。私はHTMLテンプレートを持っています。与えられたHTMLテンプレートを使用して、各文字の行ごとのデータ(リストに格納されている)が、そのデータを実装して、文字の姓の5つの別個のHTMLページを作成します。ここでCSVファイルの行をPythonに保存し、HTMLでデータを印刷する方法

は、CSVファイルの画像です:i.imgur.com/rcIPW.png

は、これは私がこれまで持っているものです。

askfile = raw_input("What is the filename?") 

southpark = [] 

filename = open(askfile, 'rU') 

for row in filename: 
    print row[0:105] 

filename.close() 

上記のプリントアウト上のすべての情報IDLEシェルを5列に配置する必要がありますが、各行と列を分けてリストに格納する方法を見つけなければなりません(これは私には分かりません)。それはかなり基本的なコード私は行と列を格納する方法を把握しようとしている知っている、次に私は最初にHTMLテンプレートにデータを割り当て、次にHTMLファイルを作成する関数(def)を使用する必要がありますそのデータ/テンプレート..そして私は今までのところnoobです。ネットを検索してみましたが、私はそのことを理解していません。

..私はすべてのダウンロード可能なモジュールを使用することはできないのですが、私は、インポートCSVまたはその他もろもろのようなPythonで構築されたものを使用することができ、本当にカップルの機能、リスト、文字列で書かれることになっており、そのループします

行と列を分けて保存する方法を理解したら、HTMLテンプレートを実装してファイルを作成することができます。

私は自分のハードウェアを私のためにやってみるつもりはない、それは私がかなりプログラミングを吸うので、どんな助けもありがとう!

私はPython 2.7.2を使用しています.CSVファイルをDLする場合は、hereをクリックしてください。


UPDATE:

わかりました、どうもありがとう!それは、私が各行が何を印刷していたのか、プログラムによって何情報が読み込まれているのかを理解する助けになりました。今私はこのプログラムの中で何らかの形で関数を使う必要があるので、これは私が考えていたものです。

各行(0〜6)は別々の値を出力しますが、印刷行機能は1文字とそれに対応する値をすべて出力します。私が欲しいのは、「行を印刷する」のようなデータを印刷することですが、これらの5文字のそれぞれを別のリストに保存する必要があります。

基本的には、「行を印刷する」は5文字すべてを対応する属性で表示しますが、それぞれを5つの変数に分割してリストとして保存するにはどうすればよいですか?

私は行[0]を印刷するとき、名前を印刷するか、または行を印刷するだけで1はDOBを印刷します。私は、 "行"とループ内の5つの変数に分割し、別のdef関数がそれらの変数/データのリストを取り、それらをHTMLテンプレートと結合し、最後に印刷する必要があるdef関数を作成することを考えていました。 PythonでHTMLファイルを作成する方法を理解してください。

申し訳ありませんが、私はすべてのことを理解しようとすると混乱します。これは私のコードですが、今ではアンパックするにはあまりにも多くの値があるというエラーがありますが、私はちょっと試してみて、別のものを試してみて、動作しているかどうかを確認しようとしています。私が上でやりたかったことに基づいて、おそらくこのコードの大部分をすべて削除し、.appendや.stripなどのリスト型関数で書き直す方法を見つけなければなりません。

import csv 

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

reader = csv.reader(original) 

# List of Data 
name, dob, descript, phrase, personality, character, apparel = [] 

count = 0 

def southparkinfo(): 
for row in reader: 
    count += 1 
    if count == 0: 
     row[0] = name 
     print row[0] # Name (ex. Stan Marsh) 
     print "----------------" 
    elif count == 1: 
     row[1] = dob 
     print row[1] # DOB 
     print "----------------" 
    elif count == 2: 
     row[2] = descript 
     print row[2] # Descriptive saying (ex. Respect My Authoritah!) 
     print "----------------" 
    elif count == 3: 
     row[3] = phrase 
     print row[3] # Catch Phrase (ex. Mooom!) 
     print "----------------" 
    elif count == 4: 
     row[4] = personality 
     print row[4] # Personality (ex. Jewish) 
     print "----------------" 
    elif count == 5: 
     row[5] = character 
     print row[5] # Characteristic (ex. Politically incorrect) 
     print "----------------" 
    elif count == 6: 
     row[6] = apparel 
     print row[6] # Apparel (ex. red gloves) 
    return 

reader.close() 
+0

あなたは講義ノートを読んでみませんか?私はあなたの教授を確信しています。シンプルなデータを扱っているに違いないでしょうか? –

答えて

6

まず第一には、CSV docsを見ています。

基本を理解したら、このコードを見てください。これは、あなたが正しい道に始める必要があります:あなたはCSVファイルタイプを扱うことができますので、あなたがimport csvモジュールにしたい

import csv 

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

for row in reader: 
    #will print each row by itself (all columns from names up to what they wear) 
    print row 
    print "-----------------" 
    #will print first column (character names only) 
    print row[0] 

。ユニバーサル改行モードでファイルを開き、csv.readerで読み込みます。次に、forループを使用して、必要な行に応じて繰り返しを開始することができます。そのよう:

['Stan Marsh', 'DOB: October 19th', 'Dude!', 'Aww #$%^!', 'Star Quarterback', 'Wendy', 'red gloves'] 

----------------- 
['Kyle Broflovski', 'DOB: May 26th', 'Kick the baby!', 'You ***!', 'Jewish', 'Canadian', 'Ushanka'] 
----------------- 
['Eric Theodore Cartman', 'DOB: July 1', 'Respect My Authroitah!', 'Mooom!', 'Big-boned', 'Political 
ly incorrect', 'Knit-cap!'] 
----------------- 
['Kenny McCormick', 'DOB: March 22', 'DOD: Every other week', 'Mmff Mmff', 'MMMFFF!!!', 'Mysterion!' 
, 'Orange Parka'] 
----------------- 
['Leopold Butters Stotch', 'DOB:Younger than the others!', 'The 4th friend', 'Professor chaos', 'stu 
tter', 'innocent', 'nerdy'] 
----------------- 

最後に、第2の文print row[0]は、文字の名前を提供します。すべての単一の文字のデータの一行(自分の名前までから自分の服のタイプまで、あらゆるIE)を出力します最初print rowのみ。番号を変更すると、必要に応じて他のデータを取得することができます。覚えておいてください。CSVファイルではすべてが0から始まることを覚えておいてください。A=0, B=1, C=2, etc...printステートメントのいずれかをコメントアウトすると、これらの出力をより明確に表示することができます何をつかんでいるのですか?

----------------- 
Stan Marsh 
----------------- 
Kyle Broflovski 
----------------- 
Eric Theodore Cartman 
----------------- 
Kenny McCormick 
----------------- 
Leopold Butters Stotch 

私はそのprint "-----------------"に投げたので、あなたは異なる出力を見ることができるだろう。 これはあなたが最初にあなたを離れさせるのに役立ちます。

編集はあなたの2番目の質問に答えるために:単一文字の情報の全てがこのような何かをするだろうつかむために(最良の方法はおそらくありませんが)最も簡単な方法は:

import csv 

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

stan = reader.next() 
kyle = reader.next() 
eric = reader.next() 
kenny = reader.next() 
butters = reader.next() 

print eric 

ました出力:あなたのCSVは、そのような変更された場合、文字の順番が移動していることをことを

['Eric Theodore Cartman', 'DOB: July 1', 'Respect My Authroitah!', 'Mooom!', 'Big-boned', 'Politically incorrect', 'Knit-cap!'] 

をメモ:あなたは、出力情報を意志(例:バターがトップに移動されます)別のキャラクターの

関連する問題