【问题标题】:encode special characters python for csv output为csv输出编码特殊字符python
【发布时间】:2016-04-18 14:57:07
【问题描述】:

如何让csv.writer.writerow 输出 á 或 è 以及其他特殊字符,与 u、n....等相同?

我收到一个错误 UnicodeEncodeError: 'ascii' codec can't encode character u'\xed' in position 37: ordinal not in range(128)

尝试了this文章中的一些建议,无济于事

rowPrinter = []

while x < y:
     print "Data in at Line " + str(x + 1)
     rowPrinter.append([a[x], b[x], c[x]]])
     x = x + 1   

x = 0

writer = csv.writer(outcsv, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL, lineterminator='\n')
writer.writerow(['a', 'b', 'c'])
while x < y:
    print rowPrinter[x]
    writer.writerow(rowPrinter[x])

【问题讨论】:

    标签: python csv unicode


    【解决方案1】:

    您需要对您尝试写入的所有数据进行编码:

    writer.writerow([sub.encode("utf-8") for sub in rowPrinter[x]])
    

    如果您有混合数据:

    writer.writerow([sub.encode("utf-8")  if isinstance(sub, basestring) else sub for sub in rowPrinter[x]])
    

    【讨论】:

    • AttributeError: 'int' 对象没有属性 'encode'
    • @LucasCrostarosa,所以你有字符串和整数的混合体?
    • 是的,例如a是int,b是timestamp,c是string
    • 然后编辑将起作用,您只想对字符串进行编码
    猜你喜欢
    • 2016-10-19
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    相关资源
    最近更新 更多