从Excel数据创建结构化列表

时间:2013-03-09 04:51:53

标签: python excel list format line

大家好我正在使用Python 2.7.3并且我正在尝试构建输出列表,其中数据在每个类别下打印。

我的数据是:

('State', 'Heart Disease Death Rate (2007)', 'Motor Vehicle Death Rate (2009)', 'Teen Birth Rate (2009)', 'Adult Smoking (2010)', 'Adult Obesity (2010)')

('Alabama', '235.5', '18.01', '50.7', '21.90%', '33.00%')
('Alaska', '147.9', '9.16', '44.5', '20.40%', '25.20%')
('Arizona', '152.5', '12.24', '50.6', '13.50%', '24.70%')
('Arkansas', '221.8', '20.25', '59.3', '22.90%', '30.90%')
('California', '177.9', '8.34', '36.6', '12.10%', '24.70%')

我需要将列表读作:

 'State', 'Heart Disease', Vehicle Death Rate', 'Teen Birth Rate', 'Adult Smoking , 'Adult Obesity

Alabama'        '235.5',        18.01',             '50.7',          '21.90%',        33.00%' 
Alaska,        '147.9',         '9.16',             '44.5',          '20.40%',        25.20% 
Arizona',      '152.5',         '12.24', '           50.6',          '13.50%',       '24.70%'
Arkansas',      '221.8',        '20.25',            '59.3',          '22.90%',       '30.90%'  

到目前为止我所拥有的:

import csv
import pandas
import string, re

output = []
file1 = []

risk = open('riskfactors.csv', 'r').read() #find the file
reader = csv.reader(risk, delimiter='\t', quotechar='|')


try:
   with open('riskfactors.csv', 'rU') as file1:
    for line in file1:
        cells = line.split(",")
        output.append((cells[0], cells[1], cells[5], cells[7], cells[11], cells[13]))
    for elem in output:
        print(elem)

没有错误

我需要2.7.3,因为这是我使用import pandas的唯一方法。

如何正确打印此打印件?

我觉得我太近了,我错过了什么?任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

要将列表打印为格式化字符串,您可以使用string.format函数,该函数允许您使用空格将值填充到指定长度。

例如,如果你要做

print "{0:<20}".format( "test" )

你可以得到“test”,这是一个格式字符串,附加了空格,可以生成20个字符。您可以使用它来创建表格结构,其中所有列都是设置的宽度。请注意,如果格式字符串超过20(在此示例中)字符,那么它将不会截断它,您将不得不自己处理(即将'心脏病死亡率(2007)'更改为'心脏病'。

因此,在您的示例中,您可以使用以下代码显示字符串

outstring = ""
for item in output:
    for cell in item:
        outstring += "{0:<20}  ".format( cell ) #change 20 to whatever you want the column width to be
    outstring += "\n"

print outstring