专栏首页有趣的django9.python3实用编程技巧进阶(四)

9.python3实用编程技巧进阶(四)

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)   #4
print(sheet.ncols)   #4

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')

 结果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python3实用编程技巧进阶

    第1章 课程简介(本课程基于py3.x并赠送py2.x的讲解) 第2章 数据结构与算法相关问题与解决技巧 第3章 复杂场景下字符串处理相关问题与...

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

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

     如下元祖,通过函数判断年龄和性别,但是这样代码可读性很差,别人并不知道student[1],student[2]代表什么意思。如何解决呢

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

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

    zhang_derek
  • Python2 与Python3的版本区别实例分析

    本文实例讲述了Python2 与Python3的版本区别。分享给大家供大家参考,具体如下:

    砸漏
  • Python编程 高阶函数使用技巧

    高阶函数指的是能接收一个或多个函数作为参数的函数,python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率。

    快学Python
  • 编程大神进阶之路:Python技巧小贴士

    整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作。但是如果问题很复杂,可...

    昱良
  • 编程大神进阶之路:Python技巧小贴士

    整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作。但是如果问题很复杂,可...

    CDA数据分析师
  • 编程大神进阶之路:Python技巧小贴士

    整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作。但是如果问题很复杂,可...

    Python数据科学
  • 编程大神进阶之路:Python技巧小贴士

    介绍 Python 炫酷功能(例如,变量解包,偏函数,枚举可迭代对象等)的文章层出不穷。但是还有很多 Python 的编程小技巧鲜被提及。因此,本文会试着介绍一...

    机器之心
  • python新式类和经典类的区别实例分析

    新式类就是 class person(object): 这种形式的, 从py2.2 开始出现的

    砸漏
  • Python多版本情况下四种快速进入交互式命令行的操作技巧

    因为工作需求或者学习需要等原因,部分小伙伴的电脑中同时安装了Python2和Python3,相信在Python多版本的切换中常常会遇到Python傻傻分不清楚的...

    Python进阶者
  • 使用skimage处理图像数据的9个技巧|视觉进阶

    我们非常熟悉结构化(表格)数据的预处理步骤。你可以找到缺失的值然后添补它,然后检测并处理异常值,等等这些步骤。这有助于我们建立更好、更健壮的机器学习模型。但是当...

    磐创AI
  • Python多版本情况下四种快速进入交互式命令行的操作技巧

    信任就像一张纸,皱了,即使抚平,也恢复不了原样了!永远不要去欺骗别人,因为你能骗到的人,都是相信你的人!

    Python进阶者
  • bash编程之xargs实用技巧

    xargs结合管道操作符|,可以完成很多看似复杂的问题: 1、快速删除所有.log日志文件 机器运行久了,就会有各式各样的日志文件,散落在各个目录下,可以利用下...

    菩提树下的杨过
  • 32个实用matlab编程技巧

    今天给大家介绍一些编程小技巧,之前给大家介绍过matlab编程小技巧,本期是在之前的基础之上做了修正和补充完善,下面一起来看看吧。

    matlab爱好者
  • 软件测试进阶之4——编程语言学习技巧

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    MyJie
  • 给老徐的书《软件自动化测试实战解析-基于Python3》写的序

    明代学者林希元有云:"自古圣贤之言学也,咸以躬行实践为先,识见言论次之",强调了实践是第一位的,而著书立说次之。唯有经过实践总结而成的书,方能对读者形成更强的指...

    Linux阅码场

扫码关注云+社区

领取腾讯云代金券