$5 ファイルからの入力

5-2 タブ区切りデータから表をつくる

ファイル入力を使った、簡単な例を作ってみましょう。
ここでは、タブ区切りテキストファイルを読み込んで、次のHTMLの表を作ってみます。

World Champion

名前出身国チームマシン
1970Jochen RindtAUTLotusLotus 72 Ford
1971Jackie StewartGBRTyrrellTyrrell 003 Ford
(中略)
2001Michael SchumacherGERFerrariFerrari F2001

テキストファイルは、Perlの場合と同じものとします(ファイル名は wc.text)。 スクリプトは次の通りです。

  1: #! /usr/bin/python
  2: 
  3: HTML1 = """
  4: <HTML><HEAD><TITLE>World Champion</TITLE></HEAD><BODY>
  5:  <H2>World Champion</H2>
  6: <TABLE BORDER>
  7: <TR><TH>年</TH><TH>名前</TH><TH>出身国</TH><TH>チーム</TH><TH>マシン</TH></TR>
  8: """
  9: 
 10: HTML2 = "</TABLE></BODY></HTML>"
 11: 
 12: Table = []
 13: 
 14: File = file('wc.text', 'r')
 15: Lines = File.readlines()
 16: File.close()
 17: 
 18: for Line in Lines:
 19:    (Maker, Name, Engine, Power, Speed) = Line.split('\t')
 20:    Table .append( '<TR><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD><B>%s</B></TD></TR>\n' % (Maker, Name, Engine, Power, Speed) )
 21: 
 22: print "Content-Type: text/html\n\n"
 23: print HTML1
 24: print "\n".join(Table)
 25: print HTML2

HTMLの表の列を要素とするリストを使いたいので、12行目で空のリストを作っておきます。

14〜16行目で、ファイルを読み込んで配列に入れます。

18行目から、各行を切り分けて表の行を作ります。 19行目で一行のテキストを切り分けるときに、「Line.split('\t')」としています。 Pythonでは、文字列を切り分ける関数が、文字列オブジェクトのメソッドとして用意されています。 「文字列オブジェクト.split(区切り文字)」とすることで、切り分けられた配列が出来ます。 20行目で、HTMLの表の行を作り、リストに追加してます。ここでは % を使った方法で文字列を作ってます。

23行目からHTMLを表示します。24行目で、表の各行のリストを表示するのですが、 Pythonではリストをそのまま print すると「[1,2,3]」というように、まわりのかっこ([ ])やコンマが表示されます。 それで、リストを繋げて文字列にする必要があります。文字列を切り分けてリストにするのと逆ですね。 このためには、文字オブジェクトのメソッド join を使います。 join の使い方は「区切り文字.join(配列)」となります。これで、配列の要素の間に区切り文字がはさまれて一つの文字列になります。 上の例では、改行(\n)を区切り文字にしてますが、区切り文字を挟まずにそのままつなげたいときは「"".join(LIST)」と書きます。


Next: 5-3 簡単なリレーショナルデータベース

Previous: 5-1 ファイルからの入力

Contents


Foundation of CGI Page

春風はるか haruka@harukaze.net