如何在cgi / python中将列表列表写入文件?

时间:2017-07-17 08:15:11

标签: python python-2.7 list file cgi

我有一份清单清单:

"mappings": {
    "my_type": {
      "properties": {
        "docid": {
          "type": "keyword"
        },
        "flgname": {
          "type": "text"
        }
      }
    }
  }

该表是列表,其中每个列表具有不同的元素长度,并且所有元素可以是字符串

index.cgi:

 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)

但这会打印出来:

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'

....   ....

有人可以告诉我这里做错了什么吗?我尝试更换'\ n'并打印“#########”仍然看到:

JobId
Name
Start_Date
End_Date
Value

efwef
erwerw
01
02
99

即使我没有添加'\ n',列表中的每个元素都会以新行打印。

1 个答案:

答案 0 :(得分:2)

print添加换行符。实现所需目标的一种方法是使用print一次str.join您的行(另请注意:您的所有数据都是字符串,因此无需转换为字符串)

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

如果你有整数/浮点数不起作用:

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

join的良好接触是,它不会在字符串的末尾添加(无用的)\t,您无需手动处理。

但是你可以用一个更简单的方式使用csv模块(甚至包含非字符串列表),在一行中:

import csv,sys

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