zoukankan      html  css  js  c++  java
  • csv 基本操作, 报错解决(UnicodeEncodeError: 'utf-8' codec can't encode characters in position 232-233: surrogates not allowed)

    最常用的一种方法,利用pandas包

    import pandas as pd
    
    #任意的多组列表
    a = [1,2,3]
    b = [4,5,6]    
    
    #字典中的key值即为csv中列名
    dataframe = pd.DataFrame({'a_name':a,'b_name':b})
    
    #将DataFrame存储为csv,index表示是否显示行名,default=True
    dataframe.to_csv("test.csv",index=False,sep=',')
     
    a_name  b_name
    0       1       4
    1       2       5
    2       3       6
     

     

    同样pandas也提供简单的读csv方法

    import pandas as pd
    data = pd.read_csv('test.csv')
     

    会得到一个DataFrame类型的data,不熟悉处理方法可以参考pandas十分钟入门


    另一种方法用csv包,一行一行写入

    import csv
    
    #python2可以用file替代open
    with open("test.csv","w") as csvfile: 
        writer = csv.writer(csvfile)
    
        #先写入columns_name
        writer.writerow(["index","a_name","b_name"])
        #写入多行用writerows
        writer.writerows([[0,1,3],[1,2,3],[2,3,4]])
     
    index   a_name  b_name
    0       1       3
    1       2       3
    2       3       4
     

     

    读取csv文件用reader

    import csv
    with open("test.csv","r") as csvfile:
        reader = csv.reader(csvfile)
        #这里不需要readlines
        for line in reader:
            print line
     
     
    如果报错,使用以下方法:
    错误UnicodeEncodeError: 'utf-8' codec can't encode characters in position 232-233: surrogates not allowed
    import csv
    with open(file,'w',encoding='utf8', errors='surrogatepass') as csvfile:   csv_writer = csv.writer(csvfile)   csv_writer.writerow(headers)   csv_writer.writerow(row) 


  • 相关阅读:
    java获取年份的后两位
    jdbcTemplate的Dao层封装
    beta准备
    福大软工 · 第十一次作业
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    Alpha 冲刺 (5/10)
  • 原文地址:https://www.cnblogs.com/presleyren/p/11981299.html
Copyright © 2011-2022 走看看