1. >>> from urllib import urlretrieve
  2. >>> urlretrieve('http://table.finance.yahoo.com/table.csv?s=000001.sz',r'C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\pingan.csv',’pingan.csv’)

Urlretrieve模块第一个参数是url,第二个参数是要将打开的文件保存的文件。

对CSV文件读写使用CSV接口的reader()和writer()函数

因这个网址已经打不开了,所以在网上下载一个CSV文件直接操作

一、打开并读一个csv文件

  1. >>> help(csv.reader)
  2. Help on built-in function reader in module _csv:
  3.  
  4. reader(...)
  5. csv_reader = reader(iterable [, dialect='excel']
  6. [optional keyword args])
  7. for row in csv_reader:
  8. process(row)
  9.  
  10. The "iterable" argument can be any object that returns a line
  11. of input for each iteration, such as a file object or a list. The
  12. optional "dialect" parameter is discussed below. The function
  13. also accepts optional keyword arguments which override settings
  14. provided by the dialect.
  15.  
  16. The returned object is an iterator. Each iteration returns a row
  17. of the CSV file (which can span multiple input lines).

help(csv.reader)

参数是一个打开文件的文件对象,返回的是一个迭代器。

  1. >>> import csv
  2. >>>
  3. >>> rf = open(r"C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\bank-data.csv",'rb') #注意打开csv文件需要使用二进制打开方式
  4. >>> reader = csv.reader(rf)
  5. >>> reader.next() #csv.reader()返回的是迭代器,查看需要使用next()方法
  6. ['id', 'age', 'sex', 'region', 'income', 'married', 'children', 'car', 'save_act', 'current_act', 'mortgage', 'pep']
  7. >>> reader.next()
  8. ['ID12101', '', 'FEMALE', 'INNER_CITY', '17546.0', 'NO', '', 'NO', 'NO', 'NO', 'NO', 'YES']

查看reader()返回迭代对象的方法

  1. >>> help(reader)
  2. Help on reader object:
  3.  
  4. class reader(__builtin__.object)
  5. | CSV reader
  6. |
  7. | Reader objects are responsible for reading and parsing tabular data
  8. | in CSV format.
  9. |
  10. | Methods defined here:
  11. |
  12. | __iter__(...)
  13. | x.__iter__() <==> iter(x)
  14. |
  15. | next(...)
  16. | x.next() -> the next value, or raise StopIteration
  17. |
  18. | ----------------------------------------------------------------------
  19. | Data descriptors defined here:
  20. |
  21. | dialect
  22. |
  23. | line_num

help(reader)

二、打开并写一个文件

  1. >>> writer = csv.writer(wf)
  1. >>> help(csv.writer)
  2. Help on built-in function writer in module _csv:
  3.  
  4. writer(...)
  5. csv_writer = csv.writer(fileobj [, dialect='excel']
  6. [optional keyword args])
  7. for row in sequence:
  8. csv_writer.writerow(row)
  9.  
  10. [or]
  11.  
  12. csv_writer = csv.writer(fileobj [, dialect='excel']
  13. [optional keyword args])
  14. csv_writer.writerows(rows)
  15.  
  16. The "fileobj" argument can be any object that supports the file API.

help(csv.writer)

同reader()一样,参数是一个打开文件的对象,返回值是一个迭代器,打开文件的方式 需要使用二进制方式

  1. >>> wf = open(r'C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\bank-databak.csv','wb')
  2. >>> writer = csv.writer(wf)
  3. >>> writer.writerow(['id', 'age', 'sex', 'region', 'income', 'married', 'children', 'car', 'save_act', 'current_act', 'mortgage', 'pep'])
  4. >>> writer.writerow(reader.next())
  5. >>> writer.writerow(reader.next())
  6. >>> wf.flush() #和c语言的flush()作用相同,及时将文件缓冲区内容输出到文件上。

查看writer()返回的迭代器的方法主要是writerow()写行

  1. >>> help(writer)
  2. Help on writer object:
  3.  
  4. class writer(__builtin__.object)
  5. | CSV writer
  6. |
  7. | Writer objects are responsible for generating tabular data
  8. | in CSV format from sequence input.
  9. |
  10. | Methods defined here:
  11. |
  12. | writerow(...)
  13. | writerow(sequence)
  14. |
  15. | Construct and write a CSV record from a sequence of fields. Non-string
  16. | elements will be converted to string.
  17. |
  18. | writerows(...)
  19. | writerows(sequence of sequences)
  20. |
  21. | Construct and write a series of sequences to a csv file. Non-string
  22. | elements will be converted to string.
  23. |
  24. | ----------------------------------------------------------------------
  25. | Data descriptors defined here:
  26. |
  27. | dialect

help(writer)

Bank-data.csv是一份收入情况,现编写脚本,将文件中年龄在30-40之间,收入大于10000的另存到一个bank-databak.csv文件中.现编写脚本如下:

  1. # -*- coding: cp936 -*-
  2. import csv
  3. with open(r'C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\bank-data.csv','rb') as rf:
  4. reader = csv.reader(rf)
  5. with open(r'C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\bank-databak.csv','wb') as wf:
  6. writer = csv.writer(wf)
  7. header = reader.next() #将文件的头读出
  8. writer.writerow(header) #将文件的头写入文件
  9.  
  10. for row in reader: #迭代执行判断,文件中第一个字段代表age第4个字段代表收入
  11. #文件中读出的是字符,所以在比较时要将字符转成int或float.
  12. #python中判断数字区间可以用数学中的表达方式,与C语言不同.
  13. if (30< int(row[1])<40 and float(row[4])>10000.0):
  14. writer.writerow(row) #将合适的数据写入新的csv文件中
  15. print("end")

结果:

Ps:

注意字符串日期的比较的大小比较也可以使用如下红框的方式,、

6-1 如何读写csv数据的更多相关文章

  1. python_如何读写csv数据

    案例: 通过股票网站,我们获取了中国股市数据集,它以csv数据格式存储 Data,Open,High,Low,Close,Volume,Adj Close 2016-06-28,8.63,8.47,8 ...

  2. 使用Python读写csv文件的三种方法

    Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...

  3. python读写csv文件

    文章链接:https://www.cnblogs.com/cloud-ken/p/8432999.html Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗 ...

  4. 利用java反射读写csv中的数据

      前一段有个需求需要将从数据库读取到的信息保存到csv文件中,在实现该需求的时候发现资料比较少,经过收集反射和csv相关资料,最终得到了如下程序.  1.在使用java反射读取csv文件数据时,先通 ...

  5. 支持各种特殊字符的 CSV 解析类 (.net 实现)(C#读写CSV文件)

    CSV是一种十分简洁的数据结构,在DOTNET平台实际使用中发现微软官方并没有提供默认的方法,而网上好多例子发现实现并不严谨甚至一些含有明显错误,所以后面自己实现了一个读写工具类,这里发出来希望方便后 ...

  6. python3读写csv文件

    python读取CSV文件   python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 1. 读文件 csv_ ...

  7. MATLAB中文件的读写和数据的导入导出

    http://blog.163.com/tawney_daylily/blog/static/13614643620111117853933/ 在编写一个程序时,经常需要从外部读入数据,或者将程序运行 ...

  8. python3使用csv包,读写csv文件

    python操作csv,现在很多都用pandas包了,不过python还是有一个原始的包可以直接操作csv,或者excel的,下面举个例子说明csv读写csv文件的方法: import os impo ...

  9. 使用Spark读写CSV格式文件(转)

    原文链接:使用Spark读写CSV格式文件 CSV格式的文件也称为逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号.在本文中的CSV格 ...

随机推荐

  1. 解决IDEA Initialization error 'https://start.spring.io'

    IDEA Initialization error  'https://start.spring.io'     弹出一个error窗口    就是不能连接https://start.spring.i ...

  2. 一个用于格式化和处理数字的javascript库----Numeral.js

    npm地址:https://www.npmjs.com/package/numeral 1.转化成百分比: numeral(num).format('0.00%')

  3. java总结2

    1,对象数组,必须指定了数组长度,长度是固定的 2,除了ArrayList<E>以外,类赋值给变量,只有string类拿到的是值,其他类拿到的都是类的地址值, ArrayList<E ...

  4. lookup-method和replace-method注入

    官方文档说明: 在Spring5核心的1.4.6章节 在大多数应用程序方案中,容器中的大多数bean都是 singletons .当单例bean需要与另一个单例bean协作或非单例bean需要与另一个 ...

  5. Python3学习笔记(六):字符串

    一.基本字符串操作 所有标准的序列操作(索引.分片.乘法.判断成员资格.求长度.取最小值和最大值)对字符串同样适用.但是字符串是不可改变的. 二.字符串格式化 字符串格式化使用字符串格式化操作符(%) ...

  6. sqli-labs(26a)

    0x01偷偷看一波源码 和26关一样 闭合变成了’)而已 0X01构造语句爆库名 这是百度到的 第一个 ' 首先闭合id='$id' 中的',%a0是空格的意思,(ps:此处我的环境是ubuntu14 ...

  7. android自定义camera以及uri和文件路径之间的转换

    相对直接调用系统的camera,这种方法使用得相对还少一些.根据api文档,步骤如下: 定义一个预览类 可以参照<android高薪之路>这本书上面,有这种方法的一种完整实现 而对应的ac ...

  8. nginx中lua动态返回文件

    原来还可以这么操作,lua动态获取内容然后返回,下面是实例,可以做到先返回一个字符串,然后过5秒再返回另外一个字符串 ngx.say("hello") ngx.flush(true ...

  9. Lombok 注解简介

    Lombok @AllArgsConstructor /** * 生成一个包含所有属性的构造函数 */ @Target(ElementType.TYPE) @Retention(RetentionPo ...

  10. Stream介绍

    一.Stream介绍 现在有这样的需求:有个菜单list,菜单里面非常多的食物列表,只选取小于400卡路里的并且按照卡路里排序,然后只想知道对应的食物名字. 代码: package com.cy.ja ...