当前位置:   article > 正文

【Python 文件读写】— csv文件_csv.dictreader

csv.dictreader

目录

一、CSV文件简介

二、使用csv库读文件

1、两种方式

2、csv.reader()示例

3、csv.DictReader()示例

三、使用csv库写文件

1、两种方式

2、csv. writer()示例

3、csv.DictWriter()示例

四、使用pandas库读文件

1、原始csv文件

2、读取全部数据

2、读取特定数据

五、使用pandas库写文件

1、将csv文件的部分内容写入新文件

2、将列表写入新文件


一、CSV文件简介

        CSV,全称为逗号分隔值(Comma-Separated Values),也称为字符分隔值文件,其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一。

参考:百度百科

二、使用csv库读文件

1、两种方式

方式

含义

csv.reader()

创建一个 reader 对象,对象的内容是文件中每行信息构成的列表

csv.DictReader()

创建一个类似于reader的对象,每行内容会映射到一个字典中

2、csv.reader()示例

(1)、原始csv文件

 (2)、代码及运行结果

  1. import csv
  2. file = 'csv文件.csv'
  3. # 打开文件
  4. with open(file, "r", encoding='utf-8') as f:
  5. reader = csv.reader(f)
  6. print("reader对象:\n", reader)
  7. print("\n表头:\n", next(reader))
  8. print("\ncsv文件内容:")
  9. for row in reader:
  10. print(row)

运行截图:

3、csv.DictReader()示例

(1)、原始csv文件

 (2)、代码及运行结果

  1. import csv
  2. file = 'csv文件.csv'
  3. # 打开文件
  4. with open(file, "r", encoding='utf-8') as f:
  5. dictReader = csv.DictReader(f)
  6. print("DictReader对象:\n", dictReader)
  7. print("\ncsv文件内容:")
  8. for row in dictReader:
  9. print(row)

运行截图:

三、使用csv库写文件

1、两种方式

方式

含义

csv.writer()

创建一个 writer对象,以列表形式向文件中写入数据

csv.DictWriter()

创建一个类似于writer的对象,以字典形式向文件中写入数据

2、csv. writer()示例

(1)、原始csv文件

 (2)、代码及运行结果

  1. import csv
  2. file = 'csv文件.csv'
  3. # 打开文件
  4. with open(file, "a", encoding='utf-8', newline='') as f:
  5. writer = csv.writer(f)
  6. # writerow: 写入一条数据
  7. writer.writerow(['加拿大', 'Canada', '渥太华', 'Ottawa'])
  8. # writerow: 写入多条数据
  9. writer.writerows([['法国', 'France', '巴黎', 'Paris'], ['希腊', 'Greece', '雅典', 'Athens'], ['澳大利亚', 'Australia', '堪培拉', 'Canberra']])

运行截图:

3、csv.DictWriter()示例

(1)、代码(从头创建csv文件)

  1. import csv
  2. file = 'csv文件.csv'
  3. # 打开文件
  4. with open(file, "w", encoding='utf-8', newline='') as f:
  5. header = ['国家', '国家英文', '首都', '首都英文']
  6. dictWriter = csv.DictWriter(f, header)
  7. # writeheader: 写入表头
  8. dictWriter.writeheader()
  9. # writerow: 写入一条数据
  10. dictWriter.writerow({'国家': '中国', '国家英文': 'China', '首都': '北京', '首都英文': 'Beijing'})
  11. data = [
  12. {'国家': '秘鲁', '国家英文': 'Peru', '首都': '利马', '首都英文': 'Lima'},
  13. {'国家': '哥伦比亚', '国家英文': 'Colombia', '首都': '波哥大', '首都英文': 'Bogota'},
  14. {'国家': '俄罗斯', '国家英文': 'Russia', '首都': '莫斯科', '首都英文': 'Moscow'}
  15. ]
  16. # writerows: 写入多条数据
  17. dictWriter.writerows(data)

(2)、运行截图

四、使用pandas库读文件

1、原始csv文件

2、读取全部数据

  1. import pandas as pd
  2. file = 'csv文件.csv'
  3. # 打开文件
  4. data = pd.read_csv(file, encoding='utf-8')
  5. # 设置对齐输出
  6. pd.set_option('display.unicode.ambiguous_as_wide', True)
  7. pd.set_option('display.unicode.east_asian_width', True)
  8. print(data)

运行截图:

2、读取特定数据

  1. import pandas as pd
  2. file = 'csv文件.csv'
  3. # 设置对齐输出
  4. pd.set_option('display.unicode.ambiguous_as_wide', True)
  5. pd.set_option('display.unicode.east_asian_width', True)
  6. # nrows: 读取前nrows行 [nrows=0时即为表头]
  7. data = pd.read_csv(file, encoding='utf-8', nrows=3)
  8. print("只读取前三行:\n", data)
  9. # usecols: 读取指定列
  10. data = pd.read_csv(file, encoding='utf-8', usecols=[0, 2])
  11. print("\n只读取第一列和第三列:\n", data)
  12. # skiprows: 跳过指定行 [传入列表跳过指定几行或传入具体数字跳过前skiprows行]
  13. data = pd.read_csv(file, encoding='utf-8', skiprows=range(1, 4))
  14. print("\n跳过前三行:\n", data)

运行截图:

五、使用pandas库写文件

1、将csv文件的部分内容写入新文件

(1)、原始csv文件

 (2)、代码

  1. import pandas as pd
  2. file = 'csv文件.csv'
  3. # 读取旧文件【只读取部分内容】
  4. data = pd.read_csv(file, encoding='utf-8', usecols=[0, 2], skiprows=range(1, 4))
  5. new_file = 'csv新文件.csv'
  6. # to_csv: 写入文件
  7. data.to_csv(new_file, index=False)

(3)、运行截图

2、将列表写入新文件

(1)、原始csv文件

(2)、代码

  1. import pandas as pd
  2. file = 'csv文件.csv'
  3. data = {"国家": ["缅甸", "菲律宾", "泰国", ],
  4. "国家英文": ["Burma", "Philippines", "Thailand"],
  5. "首都": ["仰光", "马尼拉", "曼谷"],
  6. "首都英文": ["Rangoon", "Manila", "Bangkok"]}
  7. frame = pd.DataFrame(data)
  8. # header: 是否写入表头
  9. frame.to_csv(file, mode='a', header=False, index=False)

(3)、运行截图

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/212620
推荐阅读
相关标签
  

闽ICP备14008679号