python的csv文件读写问题(编码格式(中文乱码),空行)

一、python的csv写文件

1.整体写入

from pandas import  DataFrame
import numpy as np
df1 = DataFrame(np.arange(12).reshape((3,4)),columns = ['a','b','c','d'])
df1.to_csv('target.csv',encoding='utf-8')

2.以不断添加行的形式写入

            python写csv文件会遇到两个问题,一个是csv文件每写入一行会自动空一行,一个是中文遇到的编码问题。

(1)空行问题

  • python2.7,采用二进制写入,注意‘ab+’,读的时候编码格式为‘gbk’。
li1 = [1,2,3,4,5]
with open('target.csv', 'ab+') as f:
    writer = csv.writer(f)
    writer.writerow(li1)
# 或者
# f = open('target.csv', 'ab+')
  • python3.6(以及相关版本,例3.5等),可加入参数newline='',解决空行问题。
li1 = [1,2,3,4,5]
with open('target.csv', 'a+', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(li1)
# 或者
# f = open('target.csv', 'a+', newline='')

(2)中文编码问题

           python3.6(以及相关版本,例3.5等)写入以编码为‘utf-8’中文时,虽然读的时候用‘utf-8’打开不影响中文编码,但用excel打开csv文件时,会出现中文乱码问题,因此采用编码为‘utf-8-sig’的方式写入,读文件时可用‘utf-8’打开,也可用‘utf-8-sig’打开。

li1 = [1,2,3,4,5]
with open('target.csv', 'a+', newline='', encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    writer.writerow(li1)
# 或者
# f = open('target.csv', 'a+', newline='', encoding='utf-8-sig')

二、python的csv读文件

            一般情况,我会用pandas的read_csv()方法打开csv文件。

import pandas as pd
df1 = pd.read_csv('target.csv',encoding='utf-8')
print(df1)
 
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值