200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python存成csv文件时中文乱码_Python在向CSV文件写中文时乱码的处理办法

python存成csv文件时中文乱码_Python在向CSV文件写中文时乱码的处理办法

时间:2020-07-05 01:22:28

相关推荐

python存成csv文件时中文乱码_Python在向CSV文件写中文时乱码的处理办法

前言

python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode、decode。

当list、tuple、dict里面有中文时,打印出来的是Unicode编码,这个是无解的。

对中文编码纠结的建议尽快换python3吧,python2且用且珍惜!

csv中文乱码

1.open打开csv文件,用writer写入带有中文的数据时

writer写入单行

writers写入多行

# coding:utf-8

import csv

f = open("xieru.csv", 'wb')

writer = csv.writer(f)

# 需要写入的信息

data = ["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"]

writer.writerow(data) # 写入单行

# writer.writerows(datas) # 写入多行

f.close()

2.打开csv文件,发现写入的中文乱码了

编码与解码

1.中文乱码问题一直是python2挥之不去的痛,这里先弄清楚乱码原因:

python2本身内部代码的编码有str和unicode两种编码

然而文件写入到windows系统时候,windows上的是gb2312编码

所以就导致了乱码问题

2.先把python里面的中文字符串decode成utf-8,再encode为gbk编码

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

3.如果是读取csv文件的话,就反过来:

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

解决方案

1.方案一:对字符串转换编码(这个太麻烦了,不推荐)

# coding:utf-8

import csv

f = open("xieru1.csv", 'wb')

writer = csv.writer(f)

# 需要写入的信息

data = ["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"]

a = []

for i in data:

a.append(i.decode("utf-8").encode("gbk"))

writer.writerow(a) # 写入单行

# writer.writerows(datas) # 写入多行

f.close()

2.方法二:用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode (推荐)

# coding:utf-8

import csv, codecs

import sys

reload(sys)

sys.setdefaultencoding('utf8')

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

writer = csv.writer(f)

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

# 多组数据存放list列表里面

datas = [

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

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

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

]

writer.writerows(datas)

f.close()

从悠悠处搬过来的。

Mysql 导入CSV文件,中文内容乱码问题

项目中用到含有中文字段的数据CSV文件,导入Mysql数据中发现中文内容乱码. 分析原因:因为数据库字符编码问题引起. [1]创建utf-8字符集数据库 CREATE DATABASE db_name ...

PHP生成UTF-8编码的CSV文件用Excel打开乱码的解决办法

什么是BOM? 在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF.而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中.UCS规范建 ...

python在处理CSV文件时,字符串和列表写入的区别

概述 Python在处理CSV文件时,如果writerow的对象是字符串时,写入到CSV文件时将会出现一个字符占一个单元格的情况: 但是将字符串转换为列表类 ...

python中操作csv文件

python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

Python源码文件中带有中文时,输出乱码

Python源码文件中带有中文时,文件头应加注释: #!/usr/bin/env python # -*- coding: utf-8 -*- 第一行注释是为了告诉Linux/OS X系统,这是一个P ...

Java ZIP压缩和解压缩文件(解决中文文件名乱码问题)

Java ZIP压缩和解压缩文件(解决中文文件名乱码问题) 学习了:/articles/V7BBvy 引用原文: JDK中自带的ZipOutputStrea ...

jquery ajax 返回值 中文时乱码或变成问号解决方法

转载自jquery的 ajax返回值为中文时乱码解决方法 用jquery的ajax,遇到个问题,服务器端从数据库取到的数据没有出现中文乱码问题(日志打出来是没有乱码的),但是异步传到客户的时候却出现了 ...

用c#读取文件内容中文是乱码的解决方法:

用c#读取文件内容中文是乱码的解决方法: //方法1: StreamReaderdin=newStreamReader(@"C:\1.txt",System.Text.E ...

Jmeter读取CSV文件,请求参数乱码

Jmeter读取CSV文件,请求参数乱码 1.修改本地配置文件,jmeter.properties,修改以下配置项 sampleresult.default.encoding=UTF-8 重启Jmet ...

随机推荐

NHibernate系列文章二十四:NHibernate查询之Linq查询(附程序下载)

摘要 NHibernate从3.0开始支持Linq查询.写Linq to NHibernate查询就跟写.net linq代码一样,非常灵活,可以很容易实现复杂的查询.这篇文章使用Linq to NH ...

phpcms v9 源码解析(4)content模块下的index.php文件的init()方法解析

在了解index.php中的init函数的时候,让我们先看看最开始的几行代码 1-5 第二行, defined('IN_PHPCMS') or exit('Nopermission resource ...

运维人员:走好你的IT运维路

转自 /art/03/387120.htm 现阶段,大多数运维人员只是处于被动低效率手工救火的状态,企业对其重视程度不高,导致部分运维人员对自己的 ...

python基础课程_学习笔记20:标准库:有些收藏夹——os

标准库:有些收藏夹 os os模块为您提供访问多个操作系统服务特征. os和它的子模块os.path还包含一些用于检查.构造.删除文件夹和文件的函数,以及一些处理路径的函数. os模块中一些重要函数和 ...

取URL得值

有这样一个URL:/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参 ...

Keyboard Test Utility v1.0.1.0 电脑键盘测试软件绿色版

软件名称: 电脑键盘测试软件绿色版软件语言: 简体中文授权方式: 免费软件运行环境: Win8 / Win7 / Vista / WinXP软件大小: 917KB图片预览: 软件简介:Keyboard ...

夏令营讲课内容整理 Day 7.

Day7是夏令营的最后一天,这一天主要讲了骗分技巧和往年经典的一些NOIP试题以及比赛策略. 这天有个小插曲,上午的day7T3是一道和树有关的题,我是想破脑袋也想不出来,正解写不出来就写暴力吧,暴力 ...

使用JavaScript验证用户输入的是否为正整数

在项目开发中,需要使用JavaScript验证用户输入的是否为正整数. 方法一: var type="^[0-9]*[1-9][0-9]*$"; var r=new RegExp( ...

logstash收集IIS日志

匹配字段 %{TIMESTAMP_ISO8601:log_timestamp} (%{WORD:s-sitename}|-) (%{IPORHOST:s-ip}|-) (%{WORD:cs-metho ...

Selenium2+python自动化53-unittest批量执行(discover)

前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了. 加载用例后,用unittest里面的Text ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。