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 csvdef 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文件查看】
Python基础-48-文本处理(逗号分隔值CSV)相关推荐
- Python3 —— 逗号分隔值CSV
Python3 -- 逗号分隔值CSV 目录 Python3 -- 逗号分隔值CSV CSV 读写CSV文件 CSV 逗号分隔值( Comma-Separated Value, CSV).与专有的二进 ...
- python基础-引用赋值与按值赋值
一.引用赋值 1.什么是引用赋值? 定义了变量a,并且指向了内存中的一个地址,定义变量b时,将a变量的引用赋给b,两个变量指向了同一个内存地址. 2.引用赋值,如果使用的是可变类型:会被关联修改. a ...
- 【Python基础】当变量有值时,为什么会出现UnboundLocalError?
先来看两段代码. # 代码段一 x = 10def bar():print(x)bar() # 输出 10 # 代码段二 x = 10def foo():print(x)x += 1foo() # 输 ...
- Python基础学习----参数和返回值
# 函数的参数和返回值 # 4种组合方式 # 1.无参无返 # def methodone(): # 2.无参有返 def methodtwo():a=10return a # 3.有参无返 # de ...
- Python基础:函数的返回值return
Python中,用 def 语句创建函数时,可以用 return 语句指定应该返回的值,该返回值可以是任意类型.需要注意的是,return 语句在同一函数中可以出现多次,但只要有一个得到执行,就会直接 ...
- Python基础-配置文本编辑器
我们在第一章中讲述了变量, 这一章中, 我们的所有代码都是在Python终端会话中运行的, 我们以后会编辑大型程序, 有可能包含上百条代码, 这时交互式环境就显得不够强大了, 我们应当使用文本编辑器来 ...
- python基础学习笔记——方法返回值
字符串中(需要有变量接收) 判断是不是阿拉伯数字,返回的是布尔值 1 2 3 4 name = 'alexdasx' new_name = name.isdigit() print(new_name) ...
- (更新时间)2021年3月21日 python基础知识(函数的返回值)
1.函数返回值 <1>"返回值"介绍 所谓"返回值",就是程序中函数完成一件事情后,最后给调用者的结果 <2>带有返回值的函数 想要在函 ...
- python可视化添加文本_python Matplotlib基础--如何添加文本和标注
创建一个优秀的可视化图表的关键在于引导读者,让他们能理解图表所讲述的故事.在一些情况下,这个故事可以通过纯图像的方式表达,不需要额外添加文字,但是在另外一些情况中,图表需要文字的提示和标签才能将故事讲 ...
最新文章
- 2019年,我终于知道86版西游记到底好在哪里了
- 7000 界面语言不升级_仅限今日!手把手教你C++图形界面开发|附完整代码,海量干货!...
- arduino雨滴传感器原理_Arduino酸度计(PH计)
- linux环境下的连接器,Linux下连接器ld链接如何排序
- mysql读取求和_MySQL从单独的表中获取求和值
- java内存模型按照线程隔离性_深入理解Java多线程与并发框(第③篇)——Java内存模型与原子性、可见性、有序性...
- Redis多机功能介绍
- pythonapp自动化_Android App持续集成性能测试:使用Python实现UI自动化
- github 学习笔记【一】
- WPF中的动画——(三)时间线(TimeLine)
- 联想拯救者y7000p加内存条_内存、硬盘不够用?手把手教你升级联想拯救者Y7000P...
- 精准测试系列产品白皮书2020版
- 按位与运算()和求余运算(%)的联系
- 微信OAUTh2.0来实现第三方授权登录
- C语言中if语句例题详解
- django配置(setting)之ALLOWED_HOSTS
- IPO图(INPUT PROCESS OUTPUT)
- GO111MODULE作用
- web中常见的HTTP错误码
- CSDN文章摘要自定义修改
热门文章
- 易语言mysql列表框_详谈易语言的列表框
- 易基因|疾病研究:DNA甲基化与转录组分析联合揭示吸烟免疫相关疾病的表观遗传机制
- js数组遍历方法总结与对比
- redission疑难杂症大全
- android_secure写权限,android - android.permission.WRITE_SECURE_SETTINGS,系统应用程序中的权限拒绝 - 堆栈内存溢出...
- oracle trace跟踪,oracle数据库跟踪工具 — oracle-tech
- X线DR医学图像 --- DR医用滤线栅及摩尔纹详解 (三) 摩尔纹的仿真
- C4D致富经典入门到精通(七)
- WIN 8 安装PL2303驱动
- 用nat123+tomcat 发布网站