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默認為'\n',意思就是每寫入一條數據就會多一個換行
    # 如果這里編碼出錯,可以指定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默認為'\n',意思就是每寫入一條數據就會多一個換行
    # 如果這里編碼出錯,可以指定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

'''

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM