(Python基础教程之十二)Python读写CSV文件

  1. Python基础教程
  2. 在SublimeEditor中配置Python环境
  3. Python代码中添加注释
  4. Python中的变量的使用
  5. Python中的数据类型
  6. Python中的关键字
  7. Python字符串操做
  8. Python中的list操做
  9. Python中的Tuple操做
  10. Pythonmax()和min()–在列表或数组中查找最大值和最小值
  11. Python找到最大的N个(前N个)或最小的N个项目
  12. Python读写CSV文件
  13. Python中使用httplib2–HTTPGET和POST示例
  14. Python将tuple开箱为变量或参数
  15. Python开箱Tuple–太多值没法解压
  16. Pythonmultidict示例–将单个键映射到字典中的多个值
  17. PythonOrderedDict–有序字典
  18. Python字典交集–比较两个字典
  19. Python优先级队列示例

学习在Python中使用CSV文件。CSV(逗号分隔值)格式是电子表格和数据库中很是流行的导入和导出格式。Python语言包含该模块,该模块具备用于读取和写入CSV格式的数据的类。[](https://www.python.org/)csvhtml

目录
使用csv.reader()
读取CSV文件使用csv.DictReader读取CSV
文件使用csv.writer()写入CSV文件
引用
CSV方言
自定义CSV方言python

Reading CSV file with csv.reader()

csv.reader()方法返回一个reader对象,该对象将遍历给定CSV文件中的行。数据库

假设咱们有如下numbers.csv包含数字的文件:编程

6,5,3,9,8,6,7 数组

如下python脚本今后CSV文件读取数据。分布式

#!/usr/bin/python3

import csv
f = open('numbers.csv', 'r')
with f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

在上面的代码示例中,咱们打开了numbers.csv以读取并使用csv.reader()方法加载数据。post

如今,假设CSV文件将使用其余定界符。(严格来讲,这不是CSV文件,可是这种作法很常见。)例如,咱们有如下items.csv文件,其中的元素由竖线字符(|)分隔:学习

pen|table|keyboard

如下脚本从items.csv文件读取数据。spa

#!/usr/bin/python3

import csv
f = open('items.csv', 'r')
with f:
    reader = csv.reader(f, delimiter="|")
    for row in reader:
        for e in row:
            print(e)

咱们delimiter在csv.reader()方法中使用参数指定新的分隔字符。unix

Reading CSV file with csv.DictReader

csv.DictReader班的运做就像一个普通的读者,但读入字典中的信息映射

字典的键能够与fieldnames参数一块儿传递,也能够从CSV文件的第一行推断出来。

咱们有如下values.csv文件:

min, avg, max
1, 5.5, 10

第一行表明字典的键,第二行表明值。

#!/usr/bin/python3

import csv
f = open('values.csv', 'r')
with f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)

上面的python脚本使用读取values.csv文件中的值csv.DictReader。

这是示例的输出。

$ ./read_csv3.py 
{' max': ' 10', 'min': '1', ' avg': ' 5.5'}

Writing CSV file using csv.writer()

csv.writer()方法返回一个writer对象,该对象负责将用户数据转换为给定文件状对象上的定界字符串。

#!/usr/bin/python3

import csv
nms = [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]]
f = open('numbers2.csv', 'w')
with f:
    writer = csv.writer(f)
    for row in nms:
        writer.writerow(row)

该脚本将数字写入numbers2.csv文件。该writerow()方法将一行数据写入指定的文件。

该脚本将产生如下文件(numbers2.csv):

1,2,3,4,5,6 7,8,9,10,11,12

能够一次写入全部数据。该writerows()方法将全部给定的行写入CSV文件。

下一个代码示例将Python列表写入numbers3.csv文件。该脚本将三行数字写入文件。

#!/usr/bin/python3

import csv
nms = [[1, 2, 3], [7, 8, 9], [10, 11, 12]]
f = open('numbers3.csv', 'w')
with f:
    writer = csv.writer(f)
    writer.writerows(nms)

运行上述程序时,如下输出将写入numbers3.csv文件:

1,2,3 7,8,9 10,11,12

Quoting

能够在CSV文件中引用单词。Python CSV模块中有四种不一样的引用模式

  • QUOTE_ALL —引用全部字段
  • QUOTE_MINIMAL-仅引用那些包含特殊字符的字段
  • QUOTE_NONNUMERIC —引用全部非数字字段
  • QUOTE_NONE —不引用字段

在下一个示例中,咱们向items2.csv文件写入三行。全部非数字字段都用引号引发来。

#!/usr/bin/python3

import csv
f = open('items2.csv', 'w')
with f:
    writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
    writer.writerows((["coins", 3], ["pens", 2], ["bottles", 7]))

该程序将建立如下items2.csv文件。引用项目名称,不引用数字表示的数量。

"coins",3
"pens",2
"bottles",7

CSV Dialects

尽管CSV格式是一种很是简单的格式,但仍是有许多差别,例如不一样的定界符,换行或引号字符。所以,有不一样的CSV方言可用。

下一个代码示例将打印可用的方言及其特征。

#!/usr/bin/python3

import csv
names = csv.list_dialects()
for name in names:
    print(name)
    dialect = csv.get_dialect(name)
    print(repr(dialect.delimiter), end=" ")
    print(dialect.doublequote, end=" ")
    print(dialect.escapechar, end=" ")
    print(repr(dialect.lineterminator), end=" ")
    print(dialect.quotechar, end=" ")
    print(dialect.quoting, end=" ")
    print(dialect.skipinitialspace, end=" ")
    print(dialect.strict)

在csv.list_dialects()返回方言名称的列表和csv.get_dialect()方法返回与方言名称相关联的方言。

$ ./dialects.py 
excel
',' 1 None '\r\n' " 0 0 0
excel-tab
'\t' 1 None '\r\n' " 0 0 0
unix
',' 1 None '\n' " 1 0 0

程序将打印此输出。有三个内置的方言excel,excel-tab和unix。

Custom CSV Dialect

在本教程的最后一个示例中,咱们将建立一个自定义方言。使用该csv.register_dialect()方法建立自定义方言。

#!/usr/bin/python3

import csv
csv.register_dialect("hashes", delimiter="#")
f = open('items3.csv', 'w')
with f:
    writer = csv.writer(f, dialect="hashes")
    writer.writerow(("pencils", 2))
    writer.writerow(("plates", 1))
    writer.writerow(("books", 4))

该程序使用(#)字符做为分隔符。使用方法中的dialect选项指定方言csv.writer()。

该程序将产生如下文件(items3.csv):

pencils#2
plates#1
books#4

在本教程中,咱们探索了Python csv模块,并介绍了一些在python中读写CSV文件的示例。

学习愉快!

做者:分布式编程
出处:https://zthinker.com/
若是你喜欢本文,请长按二维码,关注 分布式编程
.分布式编程

相关文章
相关标签/搜索