python数据存储-- CSV

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)

原文地址:https://www.cnblogs.com/guguobao/p/9515298.html

时间: 2024-10-03 14:57:00

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

Python数据写入csv格式文件

(只是传递,基础知识也是根基) Python读取数据,并存入Excel打开的CSV格式文件内! 这里需要用到bs4,csv,codecs,os模块. 废话不多说,直接写代码!该重要的内容都已经注释了,剩下不懂的可以自己查询一下,或者QQ群内问我.QQ群在以往的博客中! 1 #coding:utf-8 2 from bs4 import BeautifulSoup 3 import bs4 4 import os 5 import time 6 import csv 7 import codecs

Python——数据存储:JSON操作

JSON格式的数据格式广泛使用在各种应用中,比XML格式更轻量级,所以现在很多应用都选择JSON格式保存数据,尤其是需要通过网络传输(如socket传输)数据时,这对于移动应用更具有优势.JSON格式数据比XML格式的数据量更小,所以传输速度更快,也更节省数据流量(省钱),因此,在移动APP应用中,几乎都是采用了JSON格式. JSON格式的数据可以保存数组和对象.JSON数组用一对中括号'[  ]'将数据括起来:JSON对象用一对大括号'{  }'将数据括起来.本文介绍JSON字符串与字典的互

csv格式的数据存储到mysql

python写的,有点冗余,先码出来~~~~ 这是data_stored.py的代码 1 # -*- coding:utf-8 -*- 2 # 存数据到mysql (只存了时间数字) 3 import pymysql 4 import csv 5 import datetime 6 import settings 7 from mysql import db 8 import os,time 9 import pandas as pd 10 import numpy as np 11 impor

运维学python之爬虫中级篇(五)数据存储(无数据库版)

本篇主要介绍,爬取html数据后,将html的正文内容存储为json或csv格式. 1 json格式存储 选定要爬取的网站后,我们利用之前学过的内容,如:Beautiful Soup.xpath等方式解析,来获取我们希望得到的内容. 1.1 获取数据 首先使用urllib访问页面https://www.lagou.com/zhaopin/Python/?labelWords=label获取html内容,代码如下: from urllib import request try: url = 'ht

Python数据可视化(Pygal、svg、csv、Bar、Line)

一.pygal(图表类型Bar) 将使用Python可视化包Pygal来生成可缩放的矢量图形文件 pygal官方文档:[www.pygal.org/en/stable/](http://www.pygal.org/en/stable/) 1.安装pygal pip install pygal -i https://pypi.tuna.tsinghua.edu.cn/simple 2.简单的python图表 import pygal pygal.Bar()(1, 3, 3, 7)(1, 6, 6,

python中如何把数据存储到本地

有很多时候,我们会在python的运行过程中得到一些重要的变量,比如一个数据量很庞大的dict.而且,后面的某些程序也会用到这个dict,那么我们就最好把它存储到本地来,然后下次调用的时候,先读取本地的文件,导入到字典类型中,调用即可.这样就免去了重新学习这个字典的过程.那么在python中如何把数据存储到本地呢?我们用到的是python中的pickle模块.  如下:import pickleda... http://wd.tgnet.com/QuestionDetail/2015041044

2017.08.04 Python网络爬虫之Scrapy爬虫实战二 天气预报的数据存储问题

1.数据存储到JSon:程序阅读一般都是使用更方便的Json或者cvs等待格式,继续讲解Scrapy爬虫的保存方式,也就是继续对pipelines.py文件动手脚 (1)创建pipelines2json.py文件: import timeimport jsonimport codecs class WeatherPipeline(object): def process_item(self, item, spider): today=time.strftime('%Y%m%d',time.loc

Python数据结构之----数据存储与深浅拷贝

要深入的了解python的数据结构,就需要先了解一些Python中数据存储的知识,进而理解Python中深浅拷贝的原理,接下来我们进一步的来学习. 一.Python的数据存储 在高级语言(C.C++.Java.Python)中,变量是对内存及其地址的抽象.在Python里,一切变量都是对象,变量的存储采用了引用的方式,存储的只是一个变量值所在的内存地址,而不是变量的本身.即变量保存的是对应数据的地址,我们将这种方式称之为对象的引用.而采取这种存储方式,变量保存的只是一个引用,所以变量所需的存储空

java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)

java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch:5.2.0 4.Linux 5.Python 6.maven 二.maven坐标: <!--java连接ulinix脚本架包--> <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>