我在Python中使用beauthoulsoup来解析一些HTML。我要处理的一个问题是,在某些情况下,colspan在头行中是不同的。(标题行是需要合并以获得列标题的行,在我的行话中)也就是说,一个列可能跨越其上或下的多个列,并且需要根据跨距添加或添加单词。下面是一个例行程序。我使用BeautifulSoup来拉colspan和每行中每个单元格的内容。longHeader是标题行中包含最多项的内容,spanLong是一个包含行中每个项的colspan的列表。这是可行的,但它看起来不是很像Python。在
另外,如果diff为<;0,那么它就不起作用了,我可以用同样的方法来解决这个问题。但在我开始之前,我想知道是否有人可以快速地看一下这一点,并提出一个更为Python式的方法。我是一个很长时间的SAS程序员,所以我努力打破模具,我会写代码,就像我在写一个SAS宏。在longHeader=['','','bananas','','','','','','','','','','trains','','planes','','','','']
shortHeader=['','','bunches','','cars','','trucks','','freight','','cargo','','all other','','']
spanShort=[1,1,3,1,3,1,3,1,3,1,3,1,3,1,3]
spanLong=[1,1,3,1,1,1,1,1,1,1,1,1,3,1,3,1,3,1,3]
combinedHeader=[]
sumSpanLong=0
sumSpanShort=0
spanDiff=0
longHeaderCount=0
for each in range(len(shortHeader)):
sumSpanLong=sumSpanLong+spanLong[longHeaderCount]
sumSpanShort=sumSpanShort+spanShort[each]
spanDiff=sumSpanShort-sumSpanLong
if spanDiff==0:
combinedHeader.append([longHeader[longHeaderCount]+' '+shortHeader[each]])
longHeaderCount=longHeaderCount+1
continue
for i in range(0,spanDiff):
combinedHeader.append([longHeader[longHeaderCount]+' '+shortHeader[each]])
longHeaderCount=longHeaderCount+1
sumSpanLong=sumSpanLong+spanLong[longHeaderCount]
spanDiff=sumSpanShort-sumSpanLong
if spanDiff==0:
combinedHeader.append([longHeader[longHeaderCount]+' '+shortHeader[each]])
longHeaderCount=longHeaderCount+1
break
print combinedHeader