ファイル入力を使った、簡単な例を作ってみましょう。
ここでは、タブ区切りテキストファイルを読み込んで、次のHTMLの表を作ってみます。
| 年 | 名前 | 出身国 | チーム | マシン |
|---|---|---|---|---|
| 1970 | Jochen Rindt | AUT | Lotus | Lotus 72 Ford |
| 1971 | Jackie Stewart | GBR | Tyrrell | Tyrrell 003 Ford |
| (中略) | ||||
| 2001 | Michael Schumacher | GER | Ferrari | Ferrari 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)」と書きます。