2017-07-17 34 views
1

Iは、リストのリストを持っている:リストのリストをcgi/pythonのファイルに書き込むには?

print "Content-Type: text/plain; charset=UTF-8" 
print "Content-Disposition: attachment; filename=test.txt" 
print 

for row in table: 
    for row_values in row: 
     if type(row_values) is not str: 
      row_values = str(row_values) 
     print row_values + '\t' 
    print '\n' 

table = [] 
headers = ["JobId", "Name", "Start_Date", "End_Date", "Value"] 
table.append(headers) 
values1 = ['efwef', 'erwerw', '01', '02', 99] 
table.append(values1) 
values2 = ['efwsdfsef', 'erdwerw', '01'] 
table.append(values2) 

表は、各リストは要素の異なる長さを有しており、すべての要素が文字列

にindex.cgiとすることができるリストのリストであります

しかし、この版画:

JobId 
Name 
Start_Date 
End_Date 
Value 

efwef 
erwerw 
01 
02 
99 

.... ....

ここで間違っていることを教えてもらえますか?私は「\ n」は、プリントを交換しようとした「#########」まだ私は以下を参照してください

JobId 
    Name 
    Start_Date 
    End_Date 
    Value 
########################## 
    efwef 
    erwerw 
    01 
    02 
    99 
########################## 

私は、リストの各要素が印刷された「N \」を追加していないにもかかわらず、新しい行。

+0

ノート。そして、たとえそうでなくても、それ以上のテストやパフォーマンスの低下なしに 'row_values = str(row_values)'を実行することができます。 –

+1

'print'は改行を追加します。一度に行全体を書くことを検討する必要があります。 –

+0

@ Jean-FrançoisFabreああ..私はそれを知らなかった。私はプリントが普通のようだと思った。新しいcgiに。 – user3407267

答えて

2

print改行を追加します。一つの方法は、あなたが一度str.joinを使用でprintあなたのラインになりたいですかする:あなたは、整数を持っている場合

for row in table: 
    print("\t".join(row)) 

を(また、すべてのデータが文字列であることに注意し、その必要は文字列に変換しないように)/という浮かびますそう動作しないでしょう。

for row in table: 
    print("\t".join(map(str,row))) 

joinとのすてきなタッチが、それは文字列の末尾に(役に立たない)\tを追加しないと、手動でそれを処理する必要がないということです。

しかし、あなたは1行で、(でも非文字列のリストのリストを持つ)csvモジュールを使用しても、簡単な方法でそれを行うことができます。すべての値が文字列である

import csv,sys 

csv.writer(sys.stdout,delimiter="\t").writerows(table) 
+0

ありがとう!それは今働きます! – user3407267

+0

.csvファイルでも動作しますか? – user3407267

+0

ありがとう!私はファイルに書き込むcsvを試みましたが、 '\ t'はcsvファイルでは動作しません。私は私のようなタブを区切られたファイルをのように区切ったファイルを追加/変更する必要がありますか? "Content-Type:text/plain; charset = UTF-8" print "Content-Disposition:attachment; filename = test.csv" print – user3407267

関連する問題