zoukankan      html  css  js  c++  java
  • python对csv文件读写的两种方式 和 读写文件编码问题处理

    '''
    如果文件读取数据出错,可以考虑加一个encoding属性,取值可以是:utf-8,gbk,gb18030
    或者加一个属性error,取值为ignore,例如
    open(path, encoding='gb18030', errors='ignore')
    '''
    '''
    1.csv数据为:
    1,2,3
    4,5,6
    7,8,9
    
    '''
    import csv
    def read_file1():
        with open('1.csv','r') as fp:
            # reader相当于一个迭代器
            reader = csv.reader(fp)
            # 使用next,那么就相当于把指针fp向下移动一行
            next(reader)
            for read in reader:
                print(read)
    
    def read_file2():
        with open('1.csv','r') as fp:
            # 将csv的数据转化为字典,这个时候reader里面就不再包含第一行数据
            reader = csv.DictReader(fp)
            for read in reader:
                print(read['2'])
    
    read_file1()
    '''
    输出:
    ['4', '5', '6']
    ['7', '8', '9']
    '''
    read_file2()
    '''
    输出:
    5
    8
    '''
    
    
    def write_file1():
        header = ['user', 'age']
        values = [
            ('张三', '12'),
            ('李四', '13')
        ]
        # newline默认为'
    ',意思就是每写入一条数据就会多一个换行
        # 如果这里编码出错,可以指定encoding的值
        with open('2.csv','w',newline='') as fp:
            writer = csv.writer(fp)
            writer.writerow(header)
            writer.writerows(values)
    
    write_file1()
    
    def write_file2():
        header = ['user', 'age']
        values = [
            {'user':'张三','age': '12'},
            {'user':'李四','age':'13'}
        ]
        # newline默认为'
    ',意思就是每写入一条数据就会多一个换行
        # 如果这里编码出错,可以指定encoding的值
        with open('2.csv','w',newline='') as fp:
            writer = csv.DictWriter(fp,header)
            # 写入字典头
            writer.writeheader()
            # 将字典数据写入
            writer.writerows(values)
    
    write_file2()
    
    '''
    两个函数执行后的结果一样,文件2.csv中数据为:
    user,age
    张三,12
    李四,13
    
    '''
  • 相关阅读:
    httpcontext in asp.net unit test
    initialize or clean up your unittest within .net unit test
    Load a script file in sencha, supports both asynchronous and synchronous approaches
    classes system in sencha touch
    ASP.NET MVC got 405 error on HTTP DELETE request
    how to run demo city bars using sencha architect
    sencha touch mvc
    sencha touch json store
    sencha touch jsonp
    51Nod 1344:走格子(贪心)
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/13426471.html
Copyright © 2011-2022 走看看