• 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) 


  • 相关阅读:
    mysql 存在该记录则更新,不存在则插入的sql
    php计划任务的实现
    Dictionary<TKey,TValue>泛型封装
    win10家庭版 获取 syswow64权限
    发送带参数post请求
    visual studio自动向量化
    交叉编译
    opencv笔记meanshift&camshift
    [源码学习]调试Razor从哪里开始
    [转]官网下载Google Chrome离线安装包
  • 原文地址:https://www.cnblogs.com/presleyren/p/11981299.html
Copyright © 2020-2023  润新知