我很难使用异常处理从原始列表创建自定义格式的列表列表。我的代码如下(抱歉,代码墙太多了,大部分代码只是定义所涉及的列表):
def get_data():
header_list = ['Gross profit', 'Research and development',
'Total costs and expenses', 'Total operating expenses',
'Operating income', 'Income before income taxes']
raw_financial_data = [['Fiscal year ends in December. USD in millions'
' except per share data.', 'TTM', '2012-12',
'2011-12', '2010-12', '2009-12', '2008-12'],
['Gross profit', '125390', '146216', '179627',
'120923', '98817', '188549'], ['Costs and expenses'],
['Total costs and expenses', '64695', '67490',
'106370', '67964', '64040', '106799'],
['Income before income taxes', '60695', '78726',
'73257', '52959', '34777', '81750']]
financial_data = []
rfd_header = [h[0] for h in raw_financial_data]
ttm_count = 0
for d in header_list:
for i in raw_financial_data:
try:
if i[1] == 'TTM' and ttm_count == 0:
financial_data.append(i)
ttm_count = 1
continue
except IndexError:
continue
if i[0] == d:
financial_data.append(i)
elif d not in rfd_header:
rfd_header.append(d)
financial_data.append(['No Data', 'N/A', 'N/A',
'N/A', 'N/A', 'N/A','N/A'])
return financial_data
if __name__ == "__main__":
for row in get_data():
print row
我得到的输出是:
^{pr2}$我想要的是从financial_data
中省略上面输出的第3行。其余的“No Data”行与预期一样,但是我不确定为什么except IndexError: continue
不在不附加“No Data”行的情况下跳过i
中的下一个i
,因为应该为header_list
中的项目['Costs and expenses']
引发一个{
如果有更好的方法来实现这个结果,我愿意接受一个更好的方法,但是我想理解为什么在代码中附加'No Data'行,而我认为带有financial_data.append
的整个块被一个continue
语句跳过。在
continue
语句如您所期望的那样工作。第三行-“No Data”来自d
到{输出如下:
^{pr2}$相关问题 更多 >
编程相关推荐