首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python将CSV文件读取到HTML表中

使用Python将CSV文件读取到HTML表中
EN

Stack Overflow用户
提问于 2017-05-31 13:12:25
回答 1查看 9.3K关注 0票数 2

我需要从CSV文件输入数据,并创建一个HTML表作为输出。

我目前正在使用:

代码语言:javascript
复制
with open('2016motogp.csv') as csvfile:
 reader = csv.DictReader(csvfile, delimiter='\t')
 for row in reader:
     print('<tr>')
     for fn in reader.fieldnames:
         print('<td>{}</td>'.format(row[fn]))
     print('</tr>')

我想要读入表的CSV文件是:https://ufile.io/6joj6

当我运行这个函数时,我得到了这个错误:

代码语言:javascript
复制
    ---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-11-3a27549e50fe> in <module>()
----> 1 write_html_table("2016motogp")

<ipython-input-9-91d2a78b30ad> in write_html_table(filename)
     55     with open(filename + ".csv") as csvfile:
     56         reader = csv.DictReader(csvfile, delimiter='\t')
---> 57         for row in reader:
     58             print('<tr>')
     59             for fn in reader.fieldnames:

E:\Anaconda\lib\csv.py in __next__(self)
    109         if self.line_num == 0:
    110             # Used only for its side effect.
--> 111             self.fieldnames
    112         row = next(self.reader)
    113         self.line_num = self.reader.line_num

E:\Anaconda\lib\csv.py in fieldnames(self)
     96         if self._fieldnames is None:
     97             try:
---> 98                 self._fieldnames = next(self.reader)
     99             except StopIteration:
    100                 pass

E:\Anaconda\lib\encodings\cp1252.py in decode(self, input, final)
     21 class IncrementalDecoder(codecs.IncrementalDecoder):
     22     def decode(self, input, final=False):
---> 23         return codecs.charmap_decode(input,self.errors,decoding_table)[0]
     24 
     25 class StreamWriter(Codec,codecs.StreamWriter):

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 1037: character maps to <undefined>

如果有人提供一些指导或帮助,我们将不胜感激。

提前谢谢你,

EN

回答 1

Stack Overflow用户

发布于 2017-05-31 13:36:18

错误可能是因为有问题的文件可能没有使用CP1252编码。假设它使用的是utf-8编码,只需在open语句中添加编码,它就可以工作了。我已经测试过了。

代码语言:javascript
复制
import csv

table = ''
with open(csv_path, 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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44276180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档