4.1.如何读写csv数据

爬取豆瓣top250书籍

import requests
import json
import csv
from bs4 import BeautifulSoup books = []
def book_name(url):
res = requests.get(url)
html = res.text
soup = BeautifulSoup(html, 'html.parser')
items = soup.find(class_="grid-16-8 clearfix").find(class_="indent").find_all('table') for i in items:
book = []
title = i.find(class_="pl2").find('a')
book.append('《' + title.text.replace(' ', '').replace('\n', '') + '》') star = i.find(class_="star clearfix").find(class_="rating_nums")
book.append(star.text + '分') try:
brief = i.find(class_="quote").find(class_="inq")
except AttributeError:
book.append('”暂无简介“')
else:
book.append(brief.text) link = i.find(class_="pl2").find('a')['href']
book.append(link) global books
books.append(book) print(book) try:
next = soup.find(class_="paginator").find(class_="next").find('a')['href']
# 翻到最后一页
except TypeError:
return 0
else:
return next next = 'https://book.douban.com/top250?start=0&filter='
count = 0 while next != 0:
count += 1
next = book_name(next)
print('-----------以上是第' + str(count) + '页的内容-----------') csv_file = open('D:/top250_books.csv', 'w', newline='', encoding='utf-8')
w = csv.writer(csv_file)
w.writerow(['书名', '评分', '简介', '链接'])
for b in books:
w.writerow(b)

结果

把评分为9.0的书籍保存到book_out.csv文件中

'''
1.爬取豆瓣评分排行前250本书,保存为top250.csv
2.读取top250.csv文件,把评分为9.0以上的书籍保存到另外一个csv文件中
''' import csv #打开的时候必须用encoding='utf-8',否则报错
with open('top250_books.csv', encoding='utf-8') as rf:
reader = csv.reader(rf)
#读取头部
headers = next(reader)
with open('books_out.csv', 'w', encoding='utf-8') as wf:
writer = csv.writer(wf)
#把头部信息写进去
writer.writerow(headers) for book in reader:
#获取评分
score = book[1]
#把评分大于9.0的过滤出来
if score and float(score) >= 9.0:
writer.writerow(book)

4.2.如何读写excel

安装两个库

pip install xlrd xlwt

读取excel

#4.2.如何读取excel

import xlrd

book = xlrd.open_workbook('demo.xlsx')

sheet = book.sheet_by_index(0)
#获取有多少行多少列
print(sheet.nrows) #
print(sheet.ncols) # print(sheet.cell(0,0)) #text:'姓名'
print(sheet.cell_value(0,0)) #姓名 print(sheet.row_values(0)) #['姓名', '语文', '数学', '外语']
print(sheet.row_values(1,1)) #[95.0, 99.0, 96.0]

求分数的总和

#4.2.如何读写excel

import xlrd, xlwt

rbook = xlrd.open_workbook('demo.xlsx')
rsheet = rbook.sheet_by_index(0) k = rsheet.ncols
#在最后添加一列 ‘总分’
rsheet.put_cell(0,k,xlrd.XL_CELL_TEXT, '总分', None) for i in range(1,rsheet.nrows):
#求分数总和
t = sum(rsheet.row_values(i, 1))
rsheet.put_cell(i,k,xlrd.XL_CELL_NUMBER,t,None) wbook = xlwt.Workbook()
wsheet = wbook.add_sheet(rsheet.name) for i in range(rsheet.nrows):
for j in range(rsheet.ncols):
wsheet.write(i,j,rsheet.cell_value(i,j)) wbook.save('out.xlsx')

结果

9.python3实用编程技巧进阶(四)的更多相关文章

  1. Python3实用编程技巧进阶✍✍✍

    Python3实用编程技巧进阶  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以 ...

  2. Python3实用编程技巧进阶

    Python3实用编程技巧进阶  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以 ...

  3. Python3实用编程技巧进阶 ☝☝☝

    Python3实用编程技巧进阶  ☝☝☝ 1.1.如何在列表中根据条件筛选数据 # 1.1.如何在列表中根据条件筛选数据 data = [-1, 2, 3, -4, 5] #筛选出data列表中大于等 ...

  4. 6.python3实用编程技巧进阶(一)

    1.1.如何在列表中根据条件筛选数据 # 1.1.如何在列表中根据条件筛选数据 data = [-1, 2, 3, -4, 5] #筛选出data列表中大于等于零的数据 #第一种方法,不推荐 res1 ...

  5. 7.python3实用编程技巧进阶(二)

    2.1.如何拆分含有多种分隔符的字符串 #2.1.如何拆分含有多种分隔符的字符串 s = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz' #第一种方法 def my__ ...

  6. 8.python3实用编程技巧进阶(三)

    3.1.如何实现可迭代对象和迭代器对象 #3.1 如何实现可迭代对象和迭代器对象 import requests from collections.abc import Iterable,Iterat ...

  7. 10.python3实用编程技巧进阶(五)

    5.1.如何派生内置不可变类型并修其改实例化行为 修改实例化行为 # 5.1.如何派生内置不可变类型并修其改实例化行为 #继承内置tuple, 并实现__new__,在其中修改实例化行为 class ...

  8. EF – 2.EF数据查询基础(上)查询数据的实用编程技巧

    目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...

  9. EF – 2.EF数据查询基础(上)查询数据的实用编程技巧

    目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...

随机推荐

  1. SSM框架之SpringMVC(2)参数绑定及自定义类型转换

    SpringMVC(2)参数绑定及自定义类型转换 1.请求参数的绑定 1.1. 请求参数的绑定说明 1.1.1.绑定机制 表单提交的数据都是k=v格式的 username=haha&passw ...

  2. cesium 入门开发系列矢量瓦片加载展示(附源码下载)

    前言 cesium 入门开发系列环境知识点了解:cesium api文档介绍,详细介绍 cesium 每个类的函数以及属性等等cesium 在线例子 内容概览 cesium 实现矢量瓦片加载效果 源代 ...

  3. 【转载】Android Context 到底是什么?

    什么是Context? 一个Context意味着一个场景,一个场景就是我们和软件进行交互的一个过程.比如当你使用微信的时候,场景包括聊天界面.通讯录.朋友圈,以及背后的一些数据. 那么从程序的角度来看 ...

  4. 【转载】作为Android开发者,你真的熟悉Activity吗?

    学过android的人都知道,activity是最常用的四大组件之一,但你真的了解透彻activity了吗?接下来,本人将从activity的正常和异常生命周期.启动模式.IntentFilter匹配 ...

  5. bay——linux6.5-PV-LV-VG扩容.txt

    [root@rac2 cdrom]# export LANG=en_US[root@rac2 cdrom]# lsblk[root@rac2 cdrom]# lvscan --- 查看系统PV LV ...

  6. Python—创建进程的三种方式

    方式一:os.fork() 子进程是从os.fork得到的值,然后赋值开始执行的.即子进程不执行os.fork,从得到的值开始执行. 父进程中fork之前的内容子进程同样会复制,但父子进程空间独立,f ...

  7. bash的基本特性

    1.命令历史 作用:查看之前使用的命令 关于命令历史的文件 每个用户家目录下面的.bash_history 在关机的时候,会自动写入一次(history -r 将内存中的命令历史写入文件) 关于命令历 ...

  8. Octave移动数据

    A=[1 2;3 4;5 6] size(A)   会返回(3,2) length(A)  会返回矩阵的维度   =3 pwd  :查看当前Octave的路径 cd D:/... :改变Octave的 ...

  9. 使用Xmanager分析Java内存情况

    今天是想看下程序在正式环境中,内存使用回收的情况,于是开始. 1.首先下载Xmanager,Xshell,然后在Xshell-设置-隧道中设置转发X11连接到Xmanager: 2.开始布置Linux ...

  10. idea配置pyspark

    默认python已经配好,并已经导入idea,只剩下pyspark的安装 1.解压spark-2.1.0-bin-hadoop2.7放入磁盘目录 D:\spark-2.1.0-bin-hadoop2. ...