当前位置:   article > 正文

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

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

一、python的csv写文件

1.整体写入

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

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

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

(1)空行问题

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

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

二、python的csv读文件

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

  1. import pandas as pd
  2. df1 = pd.read_csv('target.csv',encoding='utf-8')
  3. print(df1)
 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/43900
推荐阅读
相关标签
  

闽ICP备14008679号