其他分享
首页 > 其他分享> > 25. 读写csv数据

25. 读写csv数据

作者:互联网

例如,我们编写爬虫从豆瓣网爬取了一些书籍的信息,以csv数据格式存储:

书名, 作者, 出版社, 价格
精通scrapy网络爬虫, 刘硕, 清华大学出版社, 46.00
算法导论, Charles E.Leiserson, 人民邮电出版社, 85.00
Python灰帽子, Justin Seitz, 电子工业出版社, 39.00
...

要求:请将书价格高于80.00的书记录存储到另一csv文件中。

解决方案:

标准库中的csv模块,使用其中reader和writer完成csv文件读写。


csv_reader = reader(iterable [, dialect='excel']
                            [optional keyword args])

传入一个文件对象,返回一个迭代器,迭代器的每个迭代读取CSV文件(它可以跨多个输入行)的一行内容。

>>> import csv>>> rf = open('books.csv')>>> reader = csv.reader(rf, delimiter=',')>>> next(reader)['书名,作者,出版社,价格']>>> next(reader)['精通scrapy网络爬虫,刘硕,清华大学出版社,46.00']

delimiter参数指定分隔符,csv默认分隔符是,,为,时可省略。通过next()方法每次迭代一行

csv_writer = csv.writer(fileobj [, dialect='excel']
                                [optional keyword args])

传入一个文件对象,返回一个迭代器,迭代器的每个迭代写入一行内容到CSV文件中。

>>> wf = open('demo.csv', 'w')>>> writer = csv.writer(wf, delimiter=' ')              #指定分隔符为空格>>> writer.writerow([1, 2, 3])7>>> writer.writerow(['x', 'y', 'z'])7>>> writer.writerow([7, 8, 9])7>>> wf.flush()

# cat demo.csv 1 2 3
x y z
7 8 9


books.csv:

书名,作者,出版社,价格 
精通scrapy网络爬虫,刘硕,清华大学出版社,46.00
算法导论,Charles E.Leiserson,人民邮电出版社,85.00
Python灰帽子,Justin Seitz,电子工业出版社,39.00
精通scrapy网络爬虫1,刘硕,清华大学出版社,46.00
算法导论1,Charles E.Leiserson,人民邮电出版社,85.00
Python灰帽子1,Justin Seitz,电子工业出版社,39.00
精通scrapy网络爬虫2,刘硕,清华大学出版社,46.00
算法导论2,Charles E.Leiserson,人民邮电出版社,85.00
Python灰帽子2,Justin Seitz,电子工业出版社,39.00
精通scrapy网络爬虫3,刘硕,清华大学出版社,46.00
算法导论3,Charles E.Leiserson,人民邮电出版社,85.00
Python灰帽子3,Justin Seitz,电子工业出版社,39.00

import csvwith open('books.csv') as rf:
    reader = csv.reader(rf)
    headers = next(reader)
    with open('books_out.csv', 'w') as wf:
        writer = csv.writer(wf)
        writer.writerow(headers)

        for book in reader:
            price = book[-1]
            if price and float(price) >= 80.00:
                writer.writerow(book)

books_out.csv:

书名,作者,出版社,价格 
算法导论,Charles E.Leiserson,人民邮电出版社,85.00
算法导论1,Charles E.Leiserson,人民邮电出版社,85.00
算法导论2,Charles E.Leiserson,人民邮电出版社,85.00
算法导论3,Charles E.Leiserson,人民邮电出版社,85.00


标签:25,85.00,Leiserson,读写,writer,人民邮电出版社,reader,csv
来源: https://blog.51cto.com/u_10272167/2730254