openpyxl

import openpyxl
# 写入的代码:
wb = openpyxl.Workbook() # 利用openpyxl.Workbook()函数创建新的workbook(工作簿)对象,就是创建新的空的Excel文件
sheet = wb.active # wb.active就是获取这个工作簿的活动表,通常就是第一个工作表
sheet.title = 'new title' # 可以用.title给工作表重命名。现在第一个工作表的名称就会由原来默认的“sheet1”改为"new title"
sheet['A1'] = '漫威宇宙' # 把'漫威宇宙'赋值给第一个工作表的A1单元格,就是往A1的单元格中写入了'漫威宇宙'
rows = [['美国队长','钢铁侠','蜘蛛侠','雷神'],['是','漫威','宇宙', '经典','人物']] # 先把要写入的多行内容写成列表,再放进大列表里,赋值给rows
for i in rows: # 遍历rows,同时把遍历的内容添加到表格里,这样就实现了多行写入sheet.append(i) # 用sheet.append()就能往表格里添加这一行文字
print(rows) # 打印rows
wb.save('Marvel.xlsx') # 保存新建的Excel文件,并命名为“Marvel.xlsx”
import openpyxl
# 读取的代码:
wb = openpyxl.load_workbook('Marvel.xlsx')  # 调用openpyxl.load_workbook()函数,打开“Marvel.xlsx”文件
sheet = wb['new title'] # 获取“Marvel.xlsx”工作簿中名为“new title”的工作表
sheetname = wb.sheetnames # sheetnames是用来获取工作簿所有工作表的名字的。如果你不知道工作簿到底有几个工作表,就可以把工作表的名字都打印出来
print(sheetname)
A1_cell = sheet['A1'] # 把“new title”工作表中A1单元格赋值给A1_cell,再利用单元格value属性,就能打印出A1单元格的值
A1_value = A1_cell.value
print(A1_value)

csv

import csv
# 写入的代码:
# 调用open()函数打开csv文件,传入参数:文件名“demo.csv”、写入模式“w”、newline=''、encoding='utf-8'。
csv_file = open('demo.csv','w',newline='',encoding='utf-8') # 加newline=' '参数的原因是,可以避免csv文件出现两倍的行距(就是能避免表格的行与行之间出现空白行);加encoding='utf-8',可以避免编码问题导致的报错或乱码
# 用csv.writer()函数创建一个writer对象。
writer = csv.writer(csv_file)
# 调用writer对象的writerow()方法,可以在csv文件里写入一行文字 “电影”和“豆瓣评分”。
writer.writerow(['电影','豆瓣评分'])
# 在csv文件里写入一行文字 “银河护卫队”和“8.0”。
writer.writerow(['银河护卫队','8.0'])
# 在csv文件里写入一行文字 “复仇者联盟”和“8.1”。
writer.writerow(['复仇者联盟','8.1'])
# 写入完成后,关闭文件就大功告成啦!
csv_file.close()
import csv
# 读取的代码:
csv_file = open('demo.csv','r',newline='',encoding='utf-8')
reader = csv.reader(csv_file)
for row in reader:print(row)

存储周杰伦歌曲信息

import requests,openpyxl
# 创建工作簿
wb=openpyxl.Workbook()
# 获取工作簿的活动表
sheet=wb.active
# 工作表重命名
sheet.title='lyrics'
sheet['A1'] ='歌曲名'     # 加表头,给A1单元格赋值
sheet['B1'] ='所属专辑'   # 加表头,给B1单元格赋值
sheet['C1'] ='播放时长'   # 加表头,给C1单元格赋值
sheet['D1'] ='播放链接'   # 加表头,给D1单元格赋值
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
for x in range(5):params = {'ct': '24','qqmusic_ver': '1298','new_json': '1','remoteplace': 'txt.yqq.song','searchid':'59091538798969282','t': '0','aggr': '1','cr': '1','catZhida': '1','lossless': '0','flag_qc': '0','p': str(x + 1),'n': '20','w': '周杰伦','g_tk': '5381','loginUin': '0','hostUin': '0','format': 'json','inCharset': 'utf8','outCharset': 'utf-8','notice': '0','platform': 'yqq.json','needNewCode': '0'}res_music = requests.get(url, params=params)json_music = res_music.json()list_music = json_music['data']['song']['list']for music in list_music:# 以name为键,查找歌曲名,把歌曲名赋值给namename = music['name']# 查找专辑名,把专辑名赋给albumalbum = music['album']['name']# 查找播放时长,把时长赋值给timetime = music['interval']# 查找播放链接,把链接赋值给linklink = 'https://y.qq.com/n/yqq/song/' + str(music['mid']) + '.html\n\n'# 把name、album、time和link写成列表,用append函数多行写入Excelsheet.append([name,album,time,link])  print('歌曲名:' + name + '\n' + '所属专辑:' + album +'\n' + '播放时长:' + str(time) + '\n' + '播放链接:'+ link)
# 最后保存并命名这个Excel文件
wb.save('Jay.xlsx')

Excel存储豆瓣电影top250

import requests, bs4, openpyxl
# 创建工作簿
wb=openpyxl.Workbook()
# 获取工作簿的活动表
sheet=wb.active
# 工作表重命名
sheet.title='movies'
sheet['A1'] ='序号'       # 加表头,给A1单元格赋值
sheet['B1'] ='电影名'     # 加表头,给B1单元格赋值
sheet['C1'] ='评分'      # 加表头,给C1单元格赋值
sheet['D1'] ='推荐语'    # 加表头,给D1单元格赋值
sheet['E1'] ='链接'     # 加表头,给E1单元格赋值
headers={'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
for x in range(10):url = 'https://movie.douban.com/top250?start=' + str(x*25) + '&filter='res = requests.get(url, headers=headers)bs = bs4.BeautifulSoup(res.text, 'html.parser')bs = bs.find('ol', class_="grid_view")for titles in bs.find_all('li'):num = titles.find('em',class_="").texttitle = titles.find('span', class_="title").textcomment = titles.find('span',class_="rating_num").texturl_movie = titles.find('a')['href']if titles.find('span',class_="inq") != None:tes = titles.find('span',class_="inq").textsheet.append([num, title, comment, tes, url_movie])# 把num, title, comment, tes和url_movie写成列表,用append函数多行写入Excelprint(num + '.' + title + '——' + comment + '\n' + '推荐语:' + tes +'\n' + url_movie)else:sheet.append([num, title, comment, None,url_movie])print(num + '.' + title + '——' + comment + '\n' +'\n' + url_movie)
# 最后保存并命名这个Excel文件
wb.save('movieTop250.xlsx')

CSV存储豆瓣电影top250

# 引用csv模块
import requests, bs4, csv
# 调用open()函数打开csv文件,传入参数:文件名“movieTop250.csv”、写入模式“w”、newline=''。
csv_file=open('movieTop250.csv', 'w', newline='')
# 用csv.writer()函数创建一个writer对象。
writer = csv.writer(csv_file)
# 调用writer对象的writerow()方法,可以在csv文件里写入title:'序号', '电影名', '评分', '推荐语', '链接'
writer.writerow(['序号', '电影名', '评分', '推荐语', '链接'])
headers={'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
for x in range(10):url = 'https://movie.douban.com/top250?start=' + str(x*25) + '&filter='res = requests.get(url, headers=headers)bs = bs4.BeautifulSoup(res.text, 'html.parser')bs = bs.find('ol', class_="grid_view")for titles in bs.find_all('li'):num = titles.find('em',class_="").texttitle = titles.find('span', class_="title").textcomment = titles.find('span',class_="rating_num").texturl_movie = titles.find('a')['href']if titles.find('span',class_="inq") != None:tes = titles.find('span',class_="inq").text# 把num, title, comment, tes和url_movie写成列表,用append函数多行写入Excelwriter.writerow([num , title , comment , tes , url_movie])else:writer.writerow([num , title , comment , '', url_movie])
csv_file.close()

爬取观察者网新闻

# 导入模块
import requests
import csv
# 新建csv文件并打开文件
csv_file = open('articles.csv', 'w', newline='', encoding='utf-8')
# 用csv.writer()方法创建一个writer对象
writer = csv.writer(csv_file)
# 用writer.writerow()方法写入表头
writer.writerow(['标题', '链接'])
# 设置爬取链接
url = "https://user.guancha.cn/main/search-v2"
# 设置循环页数
for page in range(1, 4):# 封装参数params = {'page': page, 'type': 'search_news','order': '1', 'keyword': '特朗普'}# 设置请求头headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36'}# 发送请求,并把响应内容赋值到变量resres = requests.get(url, params=params, headers=headers)# 将json格式的数据转成字典articles = res.json()# 提取所有的新闻数据data = articles['data']['items']# 遍历 data 列表,提取出里面的新闻标题与链接for i in data:# 取出行数据,放到列表里row = [i['title'], i['url']]# 打印行数据print(row)# 写入行数据writer.writerow(row)
# 关闭文件
csv_file.close()

测单词的小工具

import requests
# 先用requests请求链接
link = requests.get('https://www.shanbay.com/api/v1/vocabtest/category/')
# 解析请求得到的响应
js_link = link.json()
# 让用户选择自己想测的词库,输入数字编号。int()来转换数据类型
bianhao = int(input('''请输入你选择的词库编号,按Enter确认
1,GMAT  2,考研  3,高考  4,四级  5,六级
6,英专  7,托福  8,GRE  9,雅思  10,任意
>'''))
# 利用用户输入的数字编号,获取题库的代码。如果以输入“高考”的编号“3”为例,那么ciku的值就是,在字典js_link中查找data的值,data是一个list,查找它的第bianhao-1,也就是第2个元素,得到的依然是一个list,再查找该list的第0个元素。最后得到的就是我们想要的NCEE。
ciku = js_link['data'][bianhao-1][0]
# 请求(获取)用于测试的50个单词。
test = requests.get('https://www.shanbay.com/api/v1/vocabtest/vocabularies/?category='+ciku)
# 对响应test进行解析。
words = test.json()
# 新增一个list,用于统计用户认识的单词
danci = []
# 创建一个空的列表,用于记录用户认识的单词。
words_knows = []
# 创建一个空的列表,用于记录用户不认识的单词。
not_knows = []
print ('测试现在开始。如果你认识这个单词,请输入Y,否则直接敲Enter:')
# 启动一个循环,循环的次数等于单词的数量。
n=0
for x in words['data']:n=n+1  print ("\n第"+str(n)+'个:'+x['content']) # 加一个\n,用于换行。# 让用户输入自己是否认识。answer = input('认识请敲Y,否则敲Enter:')# 如果用户认识:if answer == 'Y': danci.append(x['content'])# 就把这个单词,追加进列表words_knows。words_knows.append(x)# 否则else:# 就把这个单词,追加进列表not_knows。not_knows.append(x)
print ('\n在上述'+str(len(words['data']))+'个单词当中,有'+str(len(danci))+'个是你觉得自己认识的,它们是:')
print(danci)
print ('现在我们来检测一下,你有没有真正掌握它们:')
wrong_words = []
right_num = 0
for y in words_knows:# 我们改用A、B、C、D,不再用rank值print('\n\n'+'A:'+y['definition_choices'][0]['definition'])print('B:'+y['definition_choices'][1]['definition'])print('C:'+y['definition_choices'][2]['definition'])print('D:'+y['definition_choices'][3]['definition'])xuanze = input('请选择单词\"'+y['content']+'\"的正确翻译(输入字母即可):')# 我们创建一个字典,搭建起A、B、C、D和四个rank值的映射关系。dic = {'A':y['definition_choices'][0]['rank'],'B':y['definition_choices'][1]['rank'],'C':y['definition_choices'][2]['rank'],'D':y['definition_choices'][3]['rank']} # 此时dic[xuanze]的内容,其实就是rank值,此时的代码含义已经和之前的版本相同了。if dic[xuanze] == y['rank']:right_num += 1else:wrong_words.append(y)
print ('现在,到了公布成绩的时刻:')
# 以下是句蛮复杂的话,对照前面的代码和json文件你才能理解它。一个运行示例是:在50个高考词汇当中,你认识其中30个,实际掌握25个,错误5个。
print ('在'+str(len(words['data']))+'个'+js_link['data'][bianhao-1][1]+'词汇当中,你认识其中'+str(len(danci))+'个,实际掌握'+str(right_num)+'个,错误'+str(len(wrong_words))+'个。')
# 询问用户,是否要打印并保存错题集。
save = input ('是否打印并保存你的错词集?填入Y或N: ')
# 如果用户说是:
if save == 'Y':# 在当前目录下,创建一个错题集.txt的文档。 f = open('错题集.txt', 'a+')         print ('你记错的单词有:')# 写入"你记错的单词有:\n"f.write('你记错的单词有:\n')# 启动一个循环,循环的次数等于,用户的错词数:m=0for z in wrong_words:m = m+1# 打印每一个错词。print (z['content'])#打印每一个错词。f.write(str(m) +'. '+ z['content']+'\n')#写入序号,写入错词。           print ('你不认识的单词有:')# 写入"你没记住的单词有:\n"f.write('你没记住的单词有:\n')# 启动一个循环,循环的次数等于,用户不认识的单词数。s=0for x in not_knows:#启动一个循环,循环的次数等于,用户不认识的单词数。s=s+1print (x['content'])#打印每一个不认识的单词。f.write(str(s) +'. '+ x['content']+'\n')#写入序号,写入用户不认识的词汇。 print ('错词和没记住的词已保存至当前文件目录下,下次见!')
# 如果用户不想保存:
else:# 输出“下次见!”print('下次见!')

【Python自查手册】之存储文件csvopenpyxl模块的用法相关推荐

  1. 【Python自查手册】之项目实操

    项目实操步骤 分析:明确项目目标 拆解(将一个问题拆解为多个步骤或者多种不同的层次,逐步解决和执行并最终达到效果)–分析过程拆到无法拆解为止 解决:代码实现,逐步执行 三局两胜制小游戏 # 敌我两PK ...

  2. 【Python自查手册】之带参数请求params的用法

    params, 可以让我们带着参数来请求数据:我想要第几页?我想要搜索的关键词?我想要多少个数据? headers, 请求头.它告诉服务器,我的设备/浏览器是什么?我从哪个页面而来? 带参数请求,实现 ...

  3. 【Python自查手册】之Python数据类型

    与计算机对话 print()函数 功能:打印内容 print(520) # 无引号用法:计算结果 print('千与千寻') # 单引号用法:原样输出 print("let's go&quo ...

  4. Python教程:os 与 sys 模块详细用法

    os 模块 os 模块主要用来进行与操作系统进行交互,它的导入方式为: import os os 模块主要涉及文件操作.文件夹操作.路径操作和其他操作四个方面. 文件操作 通过 os 模块对文件直接进 ...

  5. python中每个模块都有一个名称、通过特殊变量_【有书共读01】《python学习手册》读书笔记十八...

    第24章  高级模块话题 本章研究一些模块相关的高级概念, 1.数据隐藏技巧 2.通过__future__模块启用新的语言特性 3.__name__使用模式变量 4.过渡性模块重载 5.由名称字符串的 ...

  6. Python自用手册

    Python自用手册 持续更新 转义字符 转义字符 \r 回车 直接退格到首行 \n 换行 \t 一个制表符 长度为 8 前面凑不齐8格字符,自动长度为8 例如 : print("12345 ...

  7. python语法手册-python语法手册

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 常用的也不超过十个,这种相对于更为复杂的html标记语言来说,markdown可谓 ...

  8. python语法手册-《Python 手册》pdf版电子书免费下载

    Python 是一种容易学习的强大语言. 它包括了高效的高级数据结构,提供了一个简单但很有有效的方式以便进行面向对象编程. Python 优雅的语法,动态数据类型,以及它的解释器,使其成为了大多数平台 ...

  9. python学习手册条件-总算晓得python学习手册正式版

    为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...

最新文章

  1. 华为于璠:新一代AI开源计算框架MindSpore的前世与今生 | AI ProCon 2019
  2. 关于git的使用记录总结
  3. Android Annotations配置与使用
  4. Android开发架构规范
  5. django的admin中显示为xxxx object以及元类Meta和__str__的使用
  6. php引用下级目录文件夹,使用PHP遍历文件夹与子目录的函数代码
  7. Visual Studio Code 快捷键的设置
  8. 百度区块链所遇到的问题及处理汇总
  9. 机器学习(一)绪论、算法总结
  10. Eclipse代码自动生成
  11. 采用KubeSphere的kk,部署安装多节点服务的kubernetes-v1.18.6和kubesphere-v3.0.0的踩坑过程记录,及反思
  12. 【C++】代码实现:数据线性平滑算法:3点线性平滑、5点(1次、2次、3次)线性平滑、7点(1次、2次)线性平滑
  13. 论坛看到的很有感触的问答
  14. 分享一个英语听力资源下载网站
  15. 搞不定Excel没关系,这款神器让你秒变数据可视化高手
  16. 项目管理工具dhtmlxGantt甘特图入门教程(十五):从MS项目导入/导出(上)
  17. smart gesture安装失败_3ds Max 2014 下载与安装步骤
  18. 定时器控制LED闪烁
  19. c语言将字符串写入文件
  20. Android 收音机相关知识

热门文章

  1. java a null b a_下列不属于Java关键字的是()。A.thisB.superC.finallyD.NULL
  2. LATEX学习笔记2 - 字体设置
  3. Apio2016 游记
  4. 微赞config.修改php,微赞WZ_V97.0版20170418整合包 集成人人商城V2 等400余功能模块 微信公众号第三方平台...
  5. efi 添加linux启动项,用efibootmgr管理UEFI启动项,添加丢失的启动项
  6. 各种计算机知识和技术大全
  7. DEDE列表页属性合集【集合篇】
  8. lammps案例:原子倒入容器
  9. Java重写方法实例
  10. 为何他们用了那么多人工智能却做不出一台好电视?