Python基礎-48-文本處理(逗號分隔值CSV)

前言

python自帶模塊csv可以將數據以csv格式輸出到文件,也可以將csv數據讀回

 

列表、元組數據寫入和讀取

【代碼部分】

# coding:utf-8
import csv

# data也可以爲列表
data = (
    ["1", "suner001", "b123456"],
    ["2", "suner002", "b123456"],
    ["3", "suner003", "b123456"],
    ["4", "suner004", "b123456"]
)

# 1)打開文件時,不加newline="",會默認寫入一行後隔一行再寫入
# 2)csv.writer()需要一個打開的文件對象,返回一個writer對象
# 3)writer對象提供了writerow()方法,用來在打開的文件中逐行寫入逗號分隔的數據
f = open("user_data.csv","w",encoding="utf-8",newline="")
writer = csv.writer(f)
for d in data:
    writer.writerow(d)
f.close()

# 4)csv.reader(f)需要一個打開的文件對象,返回一個reader可迭代對象對象
# 5)直接遍歷取出數據即可
f = open("user_data.csv","r",encoding="utf-8")
reader = csv.reader(f)
for no, username, password in reader:
    print("編號:%s,賬號:%s,密碼:%s" % (no, username, password))
f.close()

【控制檯輸出結果】

 

【打開user_data.csv文件查看】

 

字典數據寫入和讀取

【代碼部分】

# coding:utf-8
import csv

# data爲字典的數據列表
data = [
    {"編號":1, "賬號":"suner001", "密碼":"b123456"},
    {"編號":2, "賬號":"suner002", "密碼":"b123456"},
    {"編號":3, "賬號":"suner003", "密碼":"b123456"},
    {"編號":4, "賬號":"suner004", "密碼":"b123456"}
]

# 1)csv.DictWriter(f, key_list),需要一個打開的文件對象,和寫入的頭部(即第一行的key值),返回一個writer對象
# 2)dict_writer.writeheader()寫入第一行的頭數據(key)
# 3)循環字典列表數據,依次寫入
f = open("user_data.csv", "w", encoding="utf-8", newline="")
key_list = [k for k in data[0].keys()]  # 取出key的列表
# print(key_list)  # ['密碼', '編號', '賬號']
dict_writer = csv.DictWriter(f, key_list)
dict_writer.writeheader()
for d in data:
    dict_writer.writerow(d)
f.close()

f = open("user_data.csv","r",encoding="utf-8")
dict_reader = csv.DictReader(f)
for row in dict_reader:
    print(row)

【控制檯輸出結果】

【打開user_data.csv文件查看】

 

優化代碼

【代碼部分】

# coding:utf-8
import csv

def list_data_write_csv(list_data,file_name):
    """list數據寫入csv"""
    with open(file_name, "w", encoding="utf-8", newline="") as f:
        writer = csv.writer(f)
        for d in list_data:
            writer.writerow(d)
        return "數據全部寫入成功"


def list_data_read_csv(file_name):
    """從csv中取出list數據"""
    with open(file_name, "r", encoding="utf-8") as f:
        reader = csv.reader(f)
        for no, username, password in reader:
            print ("編號:%s,賬號:%s,密碼:%s" % (no, username, password))
        return "數據全部讀取完畢"

def dict_data_write_csv(dict_data,file_name):
    """dict數據寫入csv"""
    with open(file_name, "w", encoding="utf-8", newline="") as f:
        key_list = [k for k in dict_data[0]]  # 取出key的列表
        dict_writer = csv.DictWriter(f, key_list)
        dict_writer.writeheader()
        for d in dict_data:
            dict_writer.writerow(d)
        return "數據全部寫入成功"

def dict_data_read_csv(file_name):
    """從csv中取出dict數據"""
    with open(file_name, "r", encoding="utf-8") as f:
        dict_reader = csv.DictReader(f)
        for row in dict_reader:
            print(row)
        return "數據全部讀取完畢"


list_data= [[1, "wang01", "123"], [2, "wang02", "123"], [3, "wang03", "123"]]
dict_data = [{"編號":1, "賬號":"wang001", "密碼":"123"}, {"編號":2, "賬號":"wang002", "密碼":"123"}]

print(list_data_write_csv(list_data,"user_info.csv"))
print(list_data_read_csv("user_info.csv"))

print(dict_data_write_csv(dict_data,"user_info01.csv"))
print(dict_data_read_csv("user_info01.csv"))

【控制檯輸出結果】

【打開csv文件查看】 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章