CSV,其文件以纯文本形式存储表格数据(数字和文本),CSV记录简由某种换行符分隔字段间分隔又其他字符,常见逗号或者制表符,

  • 例如:
#coding:utf-8

import csv
headers = ['ID','UserName','Password','Age','Country']
rows = [(1001,"guobao","1382_pass",21,"China"),
(1002,"Mary","Mary_pass",20,"USA"),
(1003,"Jack","Jack_pass",20,"USA"),
]
with open('guguobao.csv','w') as f:
f_csv = csv.writer(f)
f_csv.writerow(headers)
f_csv.writerows(rows) 运行结果: ID,UserName,Password,Age,Country 1001,guobao,1382_pass,21,China 1002,Mary,Mary_pass,20,USA 1003,Jack,Jack_pass,20,USA
  • 里面的rows列表中数据元组,也可以字典数组,例如:
import csv
headers = ['ID','UserName','Password','Age','Country']
rows = [{'ID':1001,'UserName':"qiye",'Password':"qiye_pass",'Age':24,'Country':"China"},
{'ID':1002,'UserName':"Mary",'Password':"Mary_pass",'Age':20,'Country':"USA"},
{'ID':1003,'UserName':"Jack",'Password':"Jack_pass",'Age':20,'Country':"USA"},
]
with open('qiye.csv','w') as f:
f_csv = csv.DictWriter(f,headers)
f_csv.writeheader()
f_csv.writerows(rows)

接下来是CSV的读取,要取出CSV文件,需要创建reader对象,例如:

import csv
with open('gugobao.csv','r') as f:
f_csv = csv.reader(f)
headers = next(f_csv)
print headers
for row in f_csv:
print row
  • 除了利用row[0]访问ID,row[3]访问age,由于索引访问引起混淆,因此可以考虑使用元组
from collections import namedtuple
import csv
with open('qiye.csv') as f:
f_csv = csv.reader(f)
headings = next(f_csv)
Row = namedtuple('Row', headings)
for r in f_csv:
row = Row(*r)
print row.UserName,row.Password
print row 运行结果:
C:\Python27\python.exe F:/爬虫/5.1.2.py
qiye qiye_pass
Row(ID='1001', UserName='qiye', Password='qiye_pass', Age='24', Country='China')
Mary Mary_pass
Row(ID='1002', UserName='Mary', Password='Mary_pass', Age='20', Country='USA')
Jack Jack_pass
Row(ID='1003', UserName='Jack', Password='Jack_pass', Age='20', Country='USA') Process finished with exit code 0
  • 可以使用列名如row.UserName和row.Password代替下标访问。除了使用命名分组之外,另外一个解决办法就是读取一个字典序列中,如下:
import csv
with open('qiye.csv') as f:
f_csv = csv.DictReader(f)
for row in f_csv:
print row.get('UserName'),row.get('Password') 运行结果:
import csv
with open('qiye.csv') as f:
f_csv = csv.DictReader(f)
for row in f_csv:
print row.get('UserName'),row.get('Password')

最终使用CSV解析http://seputu.com首页的标题章节和连接

from lxml import etree
import requests
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers={'User-Agent':user_agent}
r = requests.get('http://seputu.com/',headers=headers)
#使用lxml解析网页 html = etree.HTML(r.text)
div_mulus = html.xpath('.//*[@class="mulu"]')#先找到所有的div class=mulu标签
pattern = re.compile(r'\s*\[(.*)\]\s+(.*)')
rows=[]
for div_mulu in div_mulus:
#找到所有的div_h2标签
div_h2 = div_mulu.xpath('./div[@class="mulu-title"]/center/h2/text()')
if len(div_h2)> 0:
h2_title = div_h2[0].encode('utf-8')
a_s = div_mulu.xpath('./div[@class="box"]/ul/li/a')
for a in a_s:
#找到href属性
href=a.xpath('./@href')[0].encode('utf-8')
#找到title属性
box_title = a.xpath('./@title')[0]
pattern = re.compile(r'\s*\[(.*)\]\s+(.*)')
match = pattern.search(box_title)
if match!=None:
date =match.group(1).encode('utf-8')
real_title= match.group(2).encode('utf-8')
# print real_title
content=(h2_title,real_title,href,date)
print content
rows.append(content)
headers = ['title','real_title','href','date']
with open('qiye.csv','w') as f:
f_csv = csv.writer(f,)
f_csv.writerow(headers)
f_csv.writerows(rows)

python数据存储-- CSV的更多相关文章

  1. python数据存储--JSON

    HTML正文存储为两种格式:JSON和CSV. 存储为JSON: 首先利用Requests访问http://seputu.com获取HTML文档: #!coding:utf-8 import requ ...

  2. Python数据写入csv格式文件

    (只是传递,基础知识也是根基) Python读取数据,并存入Excel打开的CSV格式文件内! 这里需要用到bs4,csv,codecs,os模块. 废话不多说,直接写代码!该重要的内容都已经注释了, ...

  3. 数据存储 csv

    # # 保存csv格式的数据import csv csvFile = open('test.csv','w+',newline='') #文本方式可读写 try: writer = csv.write ...

  4. python数据存储技巧

    1.文本存储 比如我们现在有10篇文章,每篇文章由三部分组成,题目,作者,内容(title,author,content),然后要求这三个部分明确展示出来,并且每篇文章之间用=====分割. 大致思路 ...

  5. Python数据存储:pickle模块的使用讲解

    在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间.Python提供的pickle模块就很好地解决了这个问题,它可以序列化对象 ...

  6. [转]pickle python数据存储

    python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...

  7. Python数据存储 — MySQL数据库操作

    本地安装MySQL 调试环境python3.6,调试python操作mysql数据库,首先要在本地或服务器安装mysql数据库. 安装参考:https://mp.csdn.net/postedit/8 ...

  8. Python - 数据存储与数据库简介

  9. python数据储存

    python数据储存 csv文件的操作 安装csv包打开cmd 执行 pip install csv引入的模块名为csv 读取文件 with open("xx.csv"," ...

随机推荐

  1. IDA 头像是谁

    IDA图标上的女子:Ada Lovelace Ada Lovelace 简介: 阿达·奥古斯塔,19世纪诗人拜伦的女儿,数学家.穿孔机程序创始人,建立了循环和子程序概念.为计算程序拟定“算法”,写作的 ...

  2. 实操 | 内存占用减少高达90%,还不用升级硬件?没错,这篇文章教你妙用Pandas轻松处理大规模数据

    注:Pandas(Python Data Analysis Library) 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.此外,Pandas 纳入了大量库和一些标准的数据模型 ...

  3. 在配置tensorflow时踩的无数个坑

    在下午尝试配置tensorflow环境时,遇到了许多天坑,讲真的心态炸了好几次,特此写下这篇记录,希望能给看到朋友一点帮助. 先说一下这抓狂的一天的起因,比赛项目想用SVM进行一下数据分析,除了常规的 ...

  4. linux 计算机概论 Linux介绍

    CPU: CPU内部可以分为两个主要单元:算数逻辑单元和控制单元. 算数逻辑单元主要用于程序运算和逻辑判断,控制单元主要用于协调各个组件和各单元的工作. CPU基本可以分为两种: 精简指令集和复杂指令 ...

  5. JS 函数基础

    函数简介 函数 函数也是一个对象 函数中可以封装一些功能(代码),在需要时可以指向这些功能(代码) 函数中可以保存一些代码在需要时调用 使用typeof检查一个函数对象时,会返回function 创建 ...

  6. Linux( Ubantu ) 的简单使用

    1.Linux常用的快捷键 Ctrl + Alt+ T --打开终端 Ctrl + Shift + C --复制 Ctrl + Shift + V --粘贴 Ctrl + Shift + A --光标 ...

  7. 解决boot项目创建后启动日志报错

    <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</ ...

  8. @SpringQueryMap注解 feign的get传参方式(转)

    spring cloud项目使用feign的时候都会发现一个问题,就是get方式无法解析对象参数.其实feign是支持对象传递的,但是得是Map形式,而且不能为空,与spring在机制上不兼容,因此无 ...

  9. [学习笔记] 平衡树——Treap

    前置技能:平衡树前传:BST 终于学到我们喜闻乐见的平衡树啦! 所以我们这次讲的是平衡树中比较好写的\(Treap\). (以后会写splay的先埋个坑在这) 好了,进入正题. step 1 我们知道 ...

  10. Spring 初探(二) AOP 图集

    Spring AOP属于第二代AOP.采用Java作为AOP的实现语言(AOL),采用动态代理机制和字节码生成技术实现. 代理设计模式 ISubject 对被访问者或者被访问资源的抽象,某些场景下不使 ...