CSV 文件

CSV 意为“逗号分隔值”(Comma-Separated Values),它是一种简单的文件格式,使用特定的结构来排列表格数据。它以纯文本形式存储表格数据,例如电子表格或数据库,并具有数据交换的标准格式。CSV 文件可以在 Excel 表格中打开,行和列的数据定义了标准格式。

Python 的 CSV 模块函数

CSV 模块的作用是处理 CSV 文件,进行读取/写入操作,并从指定的列获取数据。以下是不同类型的 CSV 函数:

  • csv.field_size_limit - 返回解析器允许的当前最大字段大小。
  • csv.get_dialect - 返回与名称关联的方言(dialect)。
  • csv.list_dialects - 返回所有已注册方言的名称。
  • csv.reader - 从 CSV 文件中读取数据。
  • csv.register_dialect - 将方言与名称关联,名称必须是字符串或 Unicode 对象。
  • csv.writer - 将数据写入 CSV 文件。
  • csv.unregister_dialect - 从方言注册表中删除与名称关联的方言。如果名称不是已注册的方言名称,则会引发错误。
  • csv.QUOTE_ALL - 指示写入对象引用所有字段。
  • csv.QUOTE_MINIMAL - 指示写入对象仅引用包含特殊字符(如引号字符、分隔符等)的字段。
  • csv.QUOTE_NONNUMERIC - 指示写入对象引用所有非数字字段。
  • csv.QUOTE_NONE - 指示写入对象永不引用字段。

写入 CSV 文件

我们也可以使用 Python 中的 csv.writer() 模块来写入任何新的和现有的 CSV 文件。它类似于 csv.reader() 模块,同样具有两个方法,即 writer 函数和 Dict Writer 类。

它提供了两个函数,即 writerow()writerows()writerow() 函数只写入一行数据,而 writerows() 函数则写入多行数据。

方言(Dialects)

方言是一种构造,允许您创建、存储和重复使用各种格式化参数。它支持多种属性,其中最常用的是:

  • Dialect.delimiter: 此属性用作字段之间的分隔字符。默认值为逗号(,)。
  • Dialect.quotechar: 此属性用于引用包含特殊字符的字段。
  • Dialect.lineterminator: 用于创建新行,其默认值为 'rn'。

让我们将以下数据写入 CSV 文件。

data = [{'Rank': 'B', 'first_name': 'Parker', 'last_name': 'Brian'},     
{'Rank': 'A', 'first_name': 'Smith', 'last_name': 'Rodriguez'},    
{'Rank': 'C', 'first_name': 'Tom', 'last_name': 'smith'},    
{'Rank': 'B', 'first_name': 'Jane', 'last_name': 'Oscar'},     
{'Rank': 'A', 'first_name': 'Alex', 'last_name': 'Tim'}]    

示例 -

import csv    
     
with open('Python.csv', 'w') as csvfile:    
    fieldnames = ['first_name', 'last_name', 'Rank']    
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)    
     
    writer.writeheader()    
    writer.writerow({'Rank': 'B', 'first_name': 'Parker', 'last_name': 'Brian'})    
    writer.writerow({'Rank': 'A', 'first_name': 'Smith',    
                     'last_name': 'Rodriguez'})    
    writer.writerow({'Rank': 'B', 'first_name': 'Jane', 'last_name': 'Oscar'})    
    writer.writerow({'Rank': 'B', 'first_name': 'Jane', 'last_name': 'Loive'})    
     
print("Writing complete")   

输出:

Writing complete

它会生成名为 'Python.csv' 的文件,其中包含以下数据:

first_name,last_name,Rank    
Parker,Brian,B    
Smith,Rodriguez,A    
Jane,Oscar,B    
Jane,Loive,B     

将 CSV 写入字典

我们还可以使用 DictWriter 类将 CSV 文件直接写入字典。

一个名为 python.csv 的文件包含以下数据:

Parker, Accounting, November

Smith, IT, October

示例 -

import csv    
with open('python.csv', mode='w') as csv_file:    
    fieldnames = ['emp_name', 'dept', 'birth_month']    
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)    
    writer.writeheader()    
    writer.writerow({'emp_name': 'Parker', 'dept': 'Accounting', 'birth_month': 'November'})    
    writer.writerow({'emp_name': 'Smith', 'dept': 'IT', 'birth_month': 'October'})    

输出:

emp_name,dept,birth_month
Parker,Accounting,November
Smith,IT,October

使用 Pandas 写入 CSV 文件

Pandas 是一个建立在 Numpy 库之上的开源库,用于快速分析、数据清理和数据准备。

使用 pandas 读取 CSV 文件与读取一样简单。您需要创建 DataFrame,它是一个二维的、异构的表格数据结构,由三个主要组件组成:数据、列和行。在这里,我们使用稍微复杂一些的文件进行读取,称为 hrdata.csv,其中包含公司员工的数据。

Name,Hire Date,Salary,Leaves Remaining    
John Idle,08/15/14,50000.00,10    
Smith Gilliam,04/07/15,65000.00,8    
Parker Chapman,02/21/14,45000.00,10    
Jones Palin,10/14/13,70000.00,3    
Terry Gilliam,07/22/14,48000.00,7    
Michael Palin,06/28/13,66000.00,8   

示例 -

import pandas    
df = pandas.read_csv('hrdata.csv',     
            index_col='Employee',     
            parse_dates=['Hired'],    
            header=0,     
            names=['Employee', 'Hired', 'Salary', 'Sick Days'])    
df.to_csv('hrdata_modified.csv')    

输出:

Employee, Hired, Salary, Sick Days
John Idle, 2014-03-15, 50000.0,10
Smith Gilliam, 2015-06-01, 65000.0,8
Parker Chapman, 2014-05-12, 45000.0,10
Jones Palin, 2013-11-01, 70000.0,3
Terry Gilliam, 2014-08-12 , 48000.0,7
Michael Palin, 2013-05-23, 66000.0,8

标签: Tkinter教程, Tkinter安装, Tkinter库, Tkinter入门, Tkinter学习, Tkinter入门教程, Tkinter, Tkinter进阶, Tkinter指南, Tkinter学习指南, Tkinter进阶教程, Tkinter编程