2012-11-17 52 views
0

我正在嘗試使用下面的代碼(pastie鏈接)生成HTML代碼,期望的輸出如下所示,獲取的輸出是CR值增加兩次並且http鏈接不正確...誰能幫助審查邏輯,看看我錯了生成HTML代碼中的邏輯問題

我的代碼: -

http://pastie.org/5391102 

輸入低於

http://pastie.org/5390316(if you copy/paste ,make sure they are tab seperated,otherwise you will get a key error) 

預期輸出: -

<table cellspacing="1" cellpadding="1" border="1"> 
<tr> 
<th bgcolor="#67B0F9" scope="col">CR</th> 
<th bgcolor="#67B0F9" scope="col">FA</th> 
<th bgcolor="#67B0F9" scope="col">CL</th> 
<th bgcolor="#67B0F9" scope="col">Title</th> 
</tr> 
<tr> 
<td><a href="http://prism/CR/409452">409452</a></td> 
<td>WLAN</td> 
<td>656885</td> 
<td>Age out RSSI values from buffer </td> 
</tr> 
<tr> 
<td><a href=http://data/409452>409452</a>,<a href=http://data/12345>12345</a></td> 
<td></td> 
<td></td> 
<td>To Record HAL and SLM FW Event Logging</td> 
</tr> 
</table> 

我的電流輸出:

<table cellspacing="1" cellpadding="1" border="1"> 
<tr> 
<th bgcolor="#67B0F9" scope="col">CR</th> 
<th bgcolor="#67B0F9" scope="col">FA</th> 
<th bgcolor="#67B0F9" scope="col">CL</th> 
<th bgcolor="#67B0F9" scope="col">Title</th> 
</tr> 
<tr> 
    <td><a href="http://prism/CR/409452">409452</a></td> 
<td><a href="http://prism/CR/409452">409452</a></td> 
<td><a href=http://prism/CR/Title>Title</a></td> 
<td>wlan</td> 
<td>656885</td> 
<td>Age out rssi values from buffer</td> 
</tr> 
<tr> 
<td><a href="http://prism/CR/409452, 12345">409452, 12345</a></td> 
<td><a href="http://prism/CR/409452, 12345">409452, 12345</a></td> 
<td><a href=http://prism/CR/Title>Title</a></td> 
<td></td> 
<td></td> 
<td>To Record HAL and SLM FW Event Logging</td> 
</tr> 
</table> 
+0

您發佈的代碼有錯誤 - 你應該張貼固定的代碼導致該輸出。 – Thomas

+0

@thomas - 我編輯..它是http://pastie.org/5391102 – user1795998

+0

@馬丁 - 你有任何意見在這個pleasE? – user1795998

回答

1

下面是輸入我的承諾。

def CRlistToTable(CRlist): 
    """ Create HTML table from CRlist data """ 
    CRstrings = ['<table cellspacing="1" cellpadding="1" border="1">'] 

    # create table's header row from the first row of CRlist 
    BGCOLOR = '#67B0F9' # column header cells background color 
    cols = CRlist[0] # column names given in first row 
    CRstrings += [' <tr>', '\n'.join(
        ' <th bgcolor="{}" scope="col">{}</th>'.format(BGCOLOR, col_name) 
        for col_name in cols), 
        ' </tr>'] 

    # create a template for remaining non-header table rows 
    TR_TEMPLATE = [' <tr>', 
        ' <td>', 
        '  {}', # for dynamically generated CR links 
        ' </td>', '\n'.join(
        [' <td>{}</td>'] * (len(cols)-1)), # one per remaining cols 
        ' </tr>'] 
    TR_TEMPLATE = '\n'.join(TR_TEMPLATE) # convert to a string 

    # apply the row template created to remaining CRlist rows 
    CR_LINK_TEMPLATE = '<a href=http://data/{0}>{0}</a>' 
    for row in CRlist[1:]: 
     if ',' not in row[0]: # no comma-delimited items in first column? 
      links = CR_LINK_TEMPLATE.format(row[0]) 
     else: 
      CRs = row[0].replace(',', ' ').split() 
      links = ',\n  '.join(CR_LINK_TEMPLATE.format(cr) for cr in CRs) 
     row[0] = links 
     CRstrings += [TR_TEMPLATE.format(*row)] 

    CRstrings += ["</table>"] 

    # return string list merged to a single long newline-delimited string 
    return '\n'.join(CRstrings) + '\n' 


with open('cr_fixes_tabbed.xml') as file: 
    xmldata = file.read() # read entire file into memory 

FIXES_START_TAG, FIXES_END_TAG = '<Fixes>, </Fixes>'.replace(',', ' ').split() 
# embedded fixes info starts right after the tag itself within the xml data 
xmlFixesStart = xmldata.find(FIXES_START_TAG) + len(FIXES_START_TAG) 
xmlFixesEnd = xmldata.find(FIXES_END_TAG) 

# extract portion of file data within the FIXES tags into a list of lines 
info = xmldata[xmlFixesStart:xmlFixesEnd].strip().splitlines() 

# split non-blank lines of tab-delimited data into list of rows of column data 
CRlist = [line.split('\t') for line in info if line] # skips blank lines 

crInfo = CRlistToTable(CRlist) # convert list into html table 
print crInfo 

輸出:

<table cellspacing="1" cellpadding="1" border="1"> 
    <tr> 
    <th bgcolor="#67B0F9" scope="col">CR</th> 
    <th bgcolor="#67B0F9" scope="col">FA</th> 
    <th bgcolor="#67B0F9" scope="col">CL</th> 
    <th bgcolor="#67B0F9" scope="col">Title</th> 
    </tr> 
    <tr> 
    <td> 
     <a href=http://data/409452>409452</a> 
    </td> 
    <td>WLAN</td> 
    <td>656885</td> 
    <td>Age out RSSI values from buffer</td> 
    </tr> 
    <tr> 
    <td> 
     <a href=http://data/409452>409452</a>, 
     <a href=http://data/12345>12345</a> 
    </td> 
    <td></td> 
    <td></td> 
    <td>To Record HAL and SLM FW Event Logging</td> 
    </tr> 
</table> 

瀏覽器視圖:

html output viewed in browser

+0

謝謝,我看到一個問題,如果列是更多,輸入像http://pastie.org/5395174其給出一個錯誤,如CRstrings + = [TR_TEMPLATE.format(* row)] IndexError:元組索引超出範圍 – user1795998

+0

Nevermind ..這是我的壞..列是少... – user1795998

+0

非常感謝您的支持..你一直很好的支持,不知道我該怎麼做才能償還你的支持:-) – user1795998