python
  • html
  • csv
  • 2017-05-31 74 views 0 likes 
    0

    我一直在嘗試通過Python將一段CSV文件讀取到HTML表格中一段時間​​。目前我的代碼看起來像:來自CSV的Python HTML表格

    import csv 
    
    table = '' 
    with open("2016motogp.csv", encoding="utf8") as csvFile: 
        reader = csv.DictReader(csvFile, delimiter=',') 
        table = '<tr>{}</tr>'.format(''.join(['<td>{}</td>'.format(header) for header in reader.fieldnames])) 
        for row in reader: 
         table_row = '<tr>' 
         for fn in reader.fieldnames: 
          table_row += '<td>{}<\td>'.format(row[fn]) 
         table_row += '<\tr>' 
         table += table_row 
    

    這是寫表的輸出: https://www.w3schools.com/code/tryit.asp?filename=FG5TPW9EY3LT

    它已經得到了所有的HTML表格標記貫穿隨着名稱的一些錯誤和奇數補充該不該」不要在那裏。 標題行除了年份單元格前的奇數加法之外是乾淨的。

    這裏是到CSV鏈接:https://uploadfiles.io/6joj6

    如果任何人都可以通過調整代碼幫助「清理」的表格,將不勝感激。 在此先感謝,

    編輯:感謝您的幫助,通過更正反斜槓正向斜槓糾正html標記,通過更改編碼選項更正除年份單元格。 我發現\ xa0是一個編碼錯誤或沿着這些行的東西,並使用:table = table.replace(u'\xa0', u' ')來代替添加。

    回答

    1

    不要手動生成HTML,而應使用dominate模塊。更容易,更強大。此外,您的代碼中有兩個拼寫錯誤 - <\tr>應該是</tr>,而<\td>應該是</td>

    +0

    哇,我不能相信我錯過了。桌子現在看起來更清潔。謝謝。不幸的是,這項任務需要手動生成HTML。你是否能夠對騎手欄和年份單元中的隨機添加提供任何建議。清理表格以供參考:https://www.w3schools.com/code/tryit.asp?filename=FG5UC7Q6RE55 – J22D

    +0

    實際上,您的CSV文件中包含這些字符。我的意思是,「騎手」列中的每個字段都以空格字符開頭,該字符是**不是空格(ASCII 32),而是非空格空格(Unicode 160或十六進制中的0xA0)。你對他們所做的事情(刪除,轉換爲空間或其他內容)完全取決於你。 –

    1

    As @błotosmętek已經提到過,在某些HTML標記中,您有<\而不是</

    關於奇怪的增加,它看起來像CSV不是UTF-8,它是UTF-8與BOM。嘗試open("2016motogp.csv", encoding="utf-8-sig")

    +0

    謝謝,這對年份單元格中的新增內容有所幫助。在每個名字之前,騎手欄目仍然充滿「\t \ xa0」。我對編碼不確定,對概念有一個非常模糊的理解。 – J22D

    +0

    這是一個_不打破空間_,我會爭辯說,它不應該在那裏。您可以使用[strip](https://docs.python.org/3/library/stdtypes.html#str.strip):'table_row + ='​​{}'.format(row [fn] .strip( ))' –

    +0

    謝謝,我做了一些快速的研究並得出了相同的結論。我只是用'table = table.replace(u'\ xa0',u'')'來刪除它。 – J22D

    相關問題