写入csv文件

一:写入字典

二:写入普通数据

读取:

第一种:普通读取

第二种:读取csv并用namedtuple映射列名,类似于使用类的实例

第三种:字典形式

import csv
from collections import namedtuple def csv_write_dict():
""" 写入字典 """
header = ["_id", "column1", "column2", "column3"]
rows = [
{"_id": 1, "column1": "a1", "column2": "b1", "column3": "c1"},
dict(_id=2, column1="a2", column2="b2", column3="c2")
]
with open("data.csv", "w", encoding="utf8", newline="") as f:
writer = csv.DictWriter(f, header)
writer.writeheader()
writer.writerows(rows) def csv_write():
""" 写入csv文件 """
header = ["id", "column1", "column2", "column3"]
rows = [
(1, "a1", "b1", "c1"),
(2, "a2", "b2", "c2")
]
with open('data.csv', "w", encoding='utf8', newline='') as f:
write = csv.writer(f)
write.writerow(header) # 写一行,第一行
write.writerows(rows) # 写多行,内容 def csv_read():
""" 普通读取csv """
with open('data.csv', encoding='utf8') as f:
reader = csv.reader(f) # 加载csv
headers = next(reader) # 第一行,即表头
print(headers)
for row in reader:
print(row) # 取出来是list
print(f'id: {row[0]}, column1: {row[1]}, column2: {row[2]}, column3: {row[3]}') def csv_read_by_namedtuple():
""" 读取csv并用namedtuple映射列名 """
with open('data.csv', encoding='utf8') as f:
reader = csv.reader(f) # 加载csv
headers = next(reader) # 第一行,即表头
Row = namedtuple('Row', headers)
for r in reader:
row = Row(*r)
print(row)
print(f'{row.id}--{row.column1}--{row.column2}--{row.column3}') def csv_read_by_dict():
""" 读取csv为字典形式 """
with open('data.csv', encoding='utf8') as f:
reader = csv.DictReader(f) # 以字典形式加载csv
for row in reader:
print(row)
print(f'id:{row["id"]}--column1:{row.get("column1")}--'
f'column12:{row.get("column2", "未获取到值")}--'
f'column3:{row.get("column3")}') if __name__ == '__main__':
csv_write()
csv_write_dict()
csv_read()
csv_read_by_namedtuple()
csv_read_by_dict()

最新文章

  1. Socket异步通讯
  2. Android开发学习笔记:浅谈显示Intent和隐式Intent
  3. SQL Server技术问题之索引优缺点
  4. 2014-11-26----css的简介
  5. u盘禁用
  6. FJ省队集训DAY4 T3
  7. ASP.NET Web Service中使用Session 及 Session丢失解决方法 续
  8. JavaScript总结-网页上显示时间
  9. BSGS算法(大步小步算法)
  10. linux 之分区和文件系统
  11. QLayout: Attempting to add QLayout XXX to XXX, which already has a layout
  12. PLC STL any数据类型
  13. 通俗理解TCP/IP协议三次握手四次分手流程
  14. 金融量化分析【day113】:羊驼策略
  15. ubuntu下java8卸载
  16. linux strtock()函数使用问题
  17. Reactjs-generator-cli 一款基于Ink构建用于快速搭建React应用的CLI scaffolding工具
  18. 树莓派通过GPIO控制步进电机
  19. gem install没有反应 解决办法
  20. Spark系列-初体验(数据准备篇)

热门文章

  1. (4.31)quotename函数
  2. <每日一题> Day3:CodeForces-1141B.MaximalContinuousRest(简单题)
  3. 移动端的设备提供了一个事件:orientationChange事件
  4. java变量的类型
  5. [CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)]飞行棋
  6. pyhton常用快捷键
  7. wikioi 2144 分步二进制枚举+map记录
  8. jQuery淡入淡出瀑布流效果
  9. 自己实现一个Redux
  10. IntelliJ IDEA 创建spring boot 的Hello World 项目