python - 在 csv.DictWriter 中用 python 编写 unicode 的最佳方法是什么
问题描述
我有一些 unicode 格式的数据,我正在尝试将其写入 csv 文件。
我得到 UnicodeEncodeError: 'ascii' codec can't encode u'\xa0'...
使用以下代码
import csv
row_all = [u'\n832\xa0\nANDY\n10-04-1987\xa0\nC\n18-02-2015\xa0\nDR\xa0\n2015\xa0\nJS\xa0\nWR\xa0\nAOM/M/BCT\xa0\n\xa0\n90000000\xa0\n'],[u'\n833\xa0\nB V BOND JAMES\n07-04-1962\xa0\nSC\n21-04-1986\xa0\nP\xa0\n2015\xa0\nJAG\xa0\nSCR\xa0\nDY CCM/FS\xa0\n\xa0\n9701370958\xa0\n'],[u'\n834\xa0\nCATHY \n20-02-1983\xa0\nNR\n02-09-2013\xa0\nD\xa0\nNR\xa0\nJS\xa0\nNR\xa0\nAOM/M/MB\xa0\n\xa0\n9760534923\xa0\n'],[u'\n835\xa0\nDAN CLINTON\n31-07-1985\xa0\nCR\n17-12-2012\xa0\nDR\xa0\nNWR\xa0\nJS\xa0\nNWR\xa0\nAOM/C/AII\xa0\n\xa0\n9001196905\xa0\n']
header_row_list = [ "S_No", "NAME" , "Date_of_birth" , "Zone" , "Date_service_joined" , "Recruitment_method" , "Batch" , "Grade" , "Posted_at" , "Designation" , "Telephone_No" , "Mobile" ]
lst_dx = []
for i in row_all:
dx_row = {}
a1 = i[0].split('\n')
for j in range(1,12+1):
dx_row[header_row_list[j-1]] = a1[j]
#dx_row[header_row_list[j-1]] = a1[j].strip()
lst_dx += [ dx_row ]
g_n = 'test2.csv'
g = open( g_n , 'wb' )
with g as out_file:
writer = csv.DictWriter(out_file , fieldnames = header_row_list )
writer.writeheader()
for row in lst_dx :
#writer.writerow([unicode(entry).encode('utf-8') for entry in row])
writer.writerow(row)
g.close()
我可以通过使用修复此错误
#dx_row[header_row_list[j-1]] = a1[j].strip()
但是有没有更好的更“pythonic”的方法来处理这个并改进这个代码?
解决方案
Pythonopen()
采用可选的关键字参数“encoding”。如果您将其设置为 UTF-8,它是否符合您的要求?
推荐阅读
- cplex - 将 CPLEX Studio 升级到学术版
- powershell - 每月只执行一次代码块 - Powershell 脚本
- android-fragments - 通过单击活动中的后退按钮转到片段
- powerbi - 为什么从 PowerPoint 打开的 PBI 报告链接不会转到 PBI 报告
- java - HarmonyOS中如何获取设备的屏幕宽度和高度?
- php - 运行 Laravel 单元测试时我可以忽略特定的迁移吗
- linux - 获取所有 AWS Lambda 函数及其标签并输出到 CSV
- python-3.x - 如何使用 postgresql 建立多个连接
- ios - 全屏时无法旋转 AVPlayerViewController
- wordpress - 编辑 WordPress 主题的默认滚动行为效果