今天在处理python写入csv中文乱码问题,尝试各种办法,百思不得其解,网上找到的最常用的办法就是

1. encoding='utf-8':无效

with open('data4.csv', 'a', encoding='utf-8', newline='') as csvfile:

fieldnames = (['id', 'name', 'age'])

writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

writer.writerow({'id': '10005', 'name': '张伟', 'age': '32'})

2. encoding='utf-8-sig':有效

with open(filename, 'a', newline='', encoding='utf-8-sig') as f: # 中文需要设置成utf-8格式

f_csv = csv.writer(f)

f_csv.writerow(('城市', '日期', '天气', '风力', '温度', '摄氏度')) # 头部信息

f_csv.writerows(data)

3. 先转码再储存:无效

data.decode('utf-8').encode('gbk')

4. 甚至直接以gbk编码写入:无效

f = codecs.open("xx.csv", 'wb', "gbk")

writer = csv.writer(f)

writer.writerow(["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"])

到此为止,中文还是乱码,我甚至开始怀疑我的excel软件是不是坏了,,我用的是wps,是不是wps需要修改编码方式?

WPS:想什么呢,我糖糖WPS怎么可能让你随便转换编码,我又不是Notepad++,我是高贵的office!

打开csv源码发现dialect="excel"

反思一下,是不是因为csv太Low了,于是竟然成功了!!!丝毫不敢代码,赶紧贴出来,以防还有新手朋友摆渡摆到翻船。拿走不谢...

writer = csv.DictWriter(csvfile, fieldnames=fieldnames, dialect="excel")

贴上源码:

class DictWriter:

def __init__(self, f, fieldnames, restval="", extrasaction="raise",

dialect="excel", *args, **kwds):

self.fieldnames = fieldnames # list of keys for the dict

self.restval = restval # for writing short dicts

if extrasaction.lower() not in ("raise", "ignore"):

raise ValueError("extrasaction (%s) must be 'raise' or 'ignore'"

% extrasaction)

self.extrasaction = extrasaction

self.writer = writer(f, dialect, *args, **kwds)

def writeheader(self):

header = dict(zip(self.fieldnames, self.fieldnames))

self.writerow(header)

def _dict_to_list(self, rowdict):

if self.extrasaction == "raise":

wrong_fields = rowdict.keys() - self.fieldnames

if wrong_fields:

raise ValueError("dict contains fields not in fieldnames: "

+ ", ".join([repr(x) for x in wrong_fields]))

return (rowdict.get(key, self.restval) for key in self.fieldnames)

def writerow(self, rowdict):

return self.writer.writerow(self._dict_to_list(rowdict))

def writerows(self, rowdicts):

return self.writer.writerows(map(self._dict_to_list, rowdicts))

吃完饭回来发现是python缓存导致,其实encoding='utf-8-sig'是有效,但当时测了很多遍都没生效,缓存误国啊,dialect默认值就是"excel",不需要修改。

python csv写入中文_python写入csv中文乱码问题,encoding='utf-8'无效还是乱码——吕江民·日常随笔...相关推荐

  1. python 乱码 无效_python写入csv中文乱码问题,encoding=’utf-8’无效还是乱码——吕江民·日常随笔...

    今天在处理python写入csv中文乱码问题,尝试各种办法,百思不得其解,网上找到的最常用的办法就是 1. encoding='utf-8':无效 with open('data4.csv', 'a' ...

  2. python writerow 返回值_python – .writerow()csv返回一个数字而不是写行

    我正在使用Python 3测试一些非常简单的代码.出于某种原因,下面的代码生成一个空输出,而不是写一行 import csv output = open('hello world.csv', 'w', ...

  3. python 读取csv带表头_python读csv文件时指定行为表头或无表头的方法

    pd.read_csv()方法中header参数,默认为0,标签为0(即第1行)的行为表头.若设置为-1,则无表头.示例如下: (1)不设置header参数(默认)时: df1 = pd.read_c ...

  4. python读取csv文件表头_Python读取CSV文件

    1.CSV简介 格式,用以存储表格数据,包括数字或者字符,下面主要介绍csv文件读取和写入两种方式 2. 读取CSV文件 Iterable:是一个行迭代器 Dialect:默认的读取方式是以excel ...

  5. python输出dat文件_Python对CSV、Excel、txt、dat文件的处理

    python读取txt文件:(思路:先打开文件,读取文件,最后用for循环输出内容) 1.读取 1.1基于python csv库 #3.读取csv至字典x,y import csv # 读取csv至字 ...

  6. python csv读写方法_python中csv文件的若干读写方法小结

    如下所示: //用普通文本文件方式打开和操作 with open("'file.csv'") as cf: lines=cf.readlines() ...... //用普通文本方 ...

  7. python读取csv指定行_Python 读取csv的某行

    利用Python自带的 csv模块 ,有两种方法可以实现提取其中的一行 假设CSV文件内容如下: No.,Name,Age,Score 1,Apple,12,98 2,Ben,13,97 3,Celi ...

  8. python csv文件写入失败_python解析csv文件失败

    准备把df文件按条件写入csv2的,但是写出来是空文件.所以我就按以下代码打印了一下发现只有字段,没有记录. 哪位老兄遇到过呢?还望指教一二import pandas as pd import num ...

  9. 为什么python注释不能中文_python中输入中文注释是无法编译

    在python程序编写时,有时候我们会用中文对程序段进行相应的注释,以增加程序的可读性,但是有时候加了中文注释后,编译时会出现编码无法编译的报错,这是由于编码格式设置不正确的原因. 工具/原料 程序语 ...

最新文章

  1. 忽略并存在数据损坏风险_内部审计快速启动数据分析的6个关键点
  2. nginx小总结(五)
  3. Linux 安全基线
  4. WPF – 使用触发器
  5. phpsocket服务端和VC客户端通信实例
  6. windows下如何github ssh 公钥
  7. windows界面程序设计,设置一个窗口始终在屏幕最前,SetWindowPos函数
  8. php短路逻辑,JS利用短路原理简写if语句
  9. 宇宙是否可以了解,宇宙和计算机科学有关系吗?
  10. Kubernetes如何删除deployment
  11. Juniper SSG20 Config DHCP Server
  12. 《Java程序设计精编教程(第3版)》之课后习题 - 个人作
  13. 数字图像处理-图像复原
  14. 系统发育树构建算法和软件
  15. EAUML日拱一卒-活动图::活动分区
  16. 移动端怎么让底部固定_逆冬:移动端排名应该怎么做?两种匹配移动端实战排名干货分享!...
  17. 什么是数字化和数字化转型?
  18. ffmpeg C代码音频解码
  19. 华为平板M3能用鸿蒙吗,华为平板M3怎么样 麒麟950处理器搭配快充只要1888!
  20. 如何培养员工的成就感和工作积极性

热门文章

  1. 拼多多根据ID取商品详情 API 的使用说明
  2. 两种登录方式的信息显示
  3. 机器人仿真设计与应用
  4. E文积累_20080131_the finest edge is made with the blunt whetstone
  5. 【阿笨狗】U盘、闪盘独门使用、保养经验大放送,有USB移动存储设备的进来看看
  6. 如果您只是做简单的光纤接续, TFN M3光纤熔接机您值得拥有!
  7. Kali安装OWASP
  8. 避免在派生类中重新定义基类的非虚函数
  9. 在eclipse上开发Android应用程序
  10. 关于报错Support for the experimental syntax ‘decorators-legacy‘ isn‘t currently enabled