个性化阅读
专注于IT技术分析

Python如何写入CSV文件?详细答案————

本文概述

CSV文件

csv代表”逗号分隔值”, 它定义为一种简单的文件格式, 使用特定的结构来排列表格数据。它以纯文本格式存储表格数据, 例如电子表格或数据库, 并具有通用的数据交换格式。 csv文件将打开到excel工作表中, 并且行和列数据定义标准格式。

Python CSV模块功能

CSV模块的工作是处理CSV文件以从指定列读取/写入和获取数据。 CSV函数有不同类型, 如下所示:

  • csv.field_size_limit?它返回解析器允许的当前最大字段大小。
  • csv.get_dialect吗?返回与名称关联的方言。
  • csv.list_dialects吗?返回所有已注册方言的名称。
  • csv.reader吗?从csv文件读取数据
  • csv.register_dialect吗?它将方言与名称相关联, 并且名称必须是字符串或Unicode对象。
  • csv.writer?将数据写入CSV文件
  • csv.unregister_dialect吗?它从方言注册表中删除与该名称关联的方言。如果名称不是注册的方言名称, 则引发错误。
  • csv.QUOTE_ALL?它指示writer对象引用所有字段。
  • csv.QUOTE_MINIMAL?它指示writer对象仅对那些包含特殊字符(例如quotechar, delimiter等)的字段进行引用。
  • csv.QUOTE_NONNUMERIC吗?它指示writer对象引用所有非数字字段。
  • csv.QUOTE_NONE?它指示writer对象不要引用字段。

编写CSV文件

我们还可以使用csv.writer()模块在Python中编写任何新的和现有的csv文件。它类似于csv.reader()模块, 还具有两种方法, 即writer函数或Dict Writer类。

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

方言

它被定义为一种允许你创建, 存储和重用各种格式设置参数的构造。它支持几种属性。最常用的是:

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

让我们将以下数据写入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.txt的文件包含以下数据:

Parker, Accounting, November
Smith, IT, October

代码

import csv
with open('python.txt', 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
赞(0) 打赏
未经允许不得转载:srcmini » Python如何写入CSV文件?详细答案————
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏