《Python编程快速上手》---项目记录(第12章)
12.4 项目:从电子表格中读取数据
import openpyxl, pprint
print('Opening workbook...')
wb = openpyxl.load_workbook('censuspopdata.xlsx')
sheet = wb.get_sheet_by_name('Population by Census Tract')
countyData = {}# 填充县城数据,通过国家人口和土地
print('Reading rows...')
for row in range(2, sheet.max_row + 1):# Each row in the spreadsheet has data for one census tract.state = sheet['B' + str(row)].valuecounty = sheet['C' + str(row)].valuepop = sheet['D' + str(row)].valuecountyData.setdefault(state, {})countyData[state].setdefault(county, {'tracts': 0, 'pop': 0})countyData[state][county]['tracts'] += 1countyData[state][county]['pop'] += int(pop)
print('Writing results...')
resultFile = open('census2010.py', 'w')
resultFile.write('allData = ' + pprint.pformat(countyData))
resultFile.close()
print('Done.')
唯一一点变化是:get_highest_row()和get_highest_column()在最新版的openpyxl模块中已经被删除了,取而代之的是max_row和max_column两个属性。
类似程序的思想
1,从电子表格中读取数据,将它作为 Python 程序的输入
example.xlxs还是书上的那个
#将从xlxs中读取的数据,存入列表name,然后输出
import openpyxl
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
name=[]for i in range(1, 8, 2):name.append(sheet.cell(row=i, column=2).value)for nam in name:print(nam)
2,检查电子表格是否有空行或无效的数据,如果有就警告。
#输出类型
import openpyxl
wb = openpyxl.load_workbook('example_one.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')print(sheet.max_row)
name=[]
for i in range(1,sheet.max_row+1):name.append(sheet.cell(row=i, column=2).value)
i=1#记录第几行是空行
for nam in name:print(nam,end=' ')print(type(nam))
import openpyxl
wb = openpyxl.load_workbook('example_one.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')print(sheet.max_row)
name=[]
for i in range(1,sheet.max_row+1):name.append(sheet.cell(row=i, column=2).value)
i=1#记录第几行是空行
for nam in name:if nam==None:print("row: "+str(i)+" 是 空行")i+=1
3,比较一个电子表格中多行的数据。
4,打开多个 Excel 文件,跨电子表格比较数据。
说一下思路:从Excel中提取数据,然后存入列表,元组,字典,然后比较即可。
12.6 项目:更新一个电子表格
假设 Garlic、Celery 和 Lemons 的价格输入的不正确,输入其正确的价格.
import openpyxl
wb = openpyxl.load_workbook('produceSales.xlsx')
sheet = wb.get_sheet_by_name('Sheet')PRICE_UPDATES = {'Garlic': 3.07,
'Celery': 1.19,
'Lemon': 1.27}for rowNum in range(2, sheet.max_row): # skip the first rowproduceName = sheet.cell(row=rowNum, column=1).valueif produceName in PRICE_UPDATES:sheet.cell(row=rowNum, column=2).value = PRICE_UPDATES[produceName]wb.save('updatedProduceSales.xlsx')
类似程序的思想
1,从一个电子表格读取数据,写入其他电子表格的某些部分
问题:如何将Excel中的一行整个转移到另一个Excel?
答:创建一个新的Excel表格,
import openpyxl
wb = openpyxl.Workbook()
sheet = wb.get_active_sheet()wb.save('writeFormula_one.xlsx')
再通过Python操作
#提取produceSale.xlsx中'Cucumber','Grapefruit','Yellow peppers'的信息
#保存至example.xlsx中import openpyxl
wb = openpyxl.load_workbook('produceSales.xlsx')
wbone = openpyxl.load_workbook('example.xlsx')sheet = wb.get_sheet_by_name('Sheet')
#原来get_sheet_by_name()中的参数 表示取第几个sheet,务必与Excel下的sheet名称对应
sheetone = wbone.get_sheet_by_name('Sheet1')flagA=False
flagB=False
flagC=False
flagD=Falsespeics=['Cucumber','Grapefruit','Yellow peppers']
speics_plus={'Cucumber':[],'Grapefruit':[],'Yellow peppers':[]}
for rowNum in range(2, sheet.max_row): produceName = sheet.cell(row=rowNum, column=1).valuecolumn2=sheet.cell(row=rowNum, column=2).valuecolumn3=sheet.cell(row=rowNum, column=3).valueif produceName in speics:speics_plus[produceName].append(column2)speics_plus[produceName].append(column3)if produceName =='Cucumber':flagA=Trueelif produceName =='Grapefruit':flagB=Trueelif produceName =='Yellow peppers':flagC=Trueif flagA == True and flagB == True and flagC == True:breakrowNum=1
#创建头部信息
sheet.cell(row=rowNum, column=1).value='PRODUCE'
sheet.cell(row=rowNum, column=2).value='COST PER POUND'
sheet.cell(row=rowNum, column=2).value='POUNDS SOLD'
rowNum+=1#将存储的信息调入example.elxs中
for key in speics_plus.keys():col=1sheetone.cell(row=rowNum, column=col).value=keycol+=1for item in speics_plus[key]:sheetone.cell(row=rowNum, column=col).value=itemcol+=1rowNum+=1wbone.save('example.xlsx')
效果:
差强人意~~~
2,从网站、文本文件或剪贴板读取数据,将它写入电子表格
要用到第八章 读写文件 的知识,
读取数据 从.txt文件
helloFile = open('C:\\Users\\your_home_folder\\hello.txt')
helloContent = helloFile.read()
helloContent
从.txt中读取数据,然后存入xlxs中
3,自动清理电子表格中的数据。例如,可以利用正则表达式,读取多种格式的电
话号码,将它们转换成单一的标准格式
知识点:第七章 模式匹配与正则表达式
import re
phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
mo = phoneNumRegex.search('My number is 415-555-4242.')
print('Phone number found: ' + mo.group())Phone number found: 415-555-4242
读取多种格式的电话号码 要进行多次正则匹配,因为无法一次匹配多个正则标准
关于12.8,12.9,12.10 import Error:https://blog.csdn.net/weixin_41569319/article/category/7753938
12.13 实践项目
12.13.1 乘法表
import openpyxl
wb = openpyxl.Workbook()
sheet = wb.get_active_sheet()n=input("输入n:")
n=int(n)
for i in range(1,n+1):sheet.cell(row=1, column=i+1).value=isheet.cell(row=i+1, column=1).value=ifor j in range(1,n+1):sheet.cell(row=i+1, column=j+1).value=i*jwb.save('writeFormula.xlsx')
没用命令行,因为没将这个文件夹添加至 环境变量
12.13.2 空行插入程序
python中的逆序遍历:
for i in range(n,1,-1)
#从第二行开始插入两行空白import openpyxl
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')n=2
m=2for i in range(sheet.max_row,n-1,-1):sheet.cell(row=i+m,column=1).value=sheet.cell(row=i,column=1).value#必须指定row与columnfor i in range(n,n+m):sheet.cell(row=i,column=1).value=""
wb.save('example_one.xlsx')
12.13.3 电子表格单元格翻转程序
同时打开两个Excel,for i ,for j 遍历即可
12.13.4 文本文件到电子表格
能把这行的赋值控制好即可
sheet.cell(row=i, column=j+1).value=..
12.13.5 电子表格到文本文件
沿纵轴遍历,for j
《Python编程快速上手》---项目记录(第12章)相关推荐
- python编程快速上手项目答案-python编程快速上手之第5章实践项目参考答案
1 #!/usr/bin/env python3.5 2 #coding:utf-8 3 #5.6.1 4 #好玩游戏的物品清单 5 #给定一个字典,包含物品名称和数量,并打印出数量对应的物品 6 7 ...
- python编程快速上手 让繁琐工作自动化 豆瓣_2019年,这些豆瓣评分9.0以上的8本程序员好书你都知道吗?...
豆瓣这些9.0以上的高评分程序员好书你都知道有哪些吗?小编去豆瓣看了一下,推荐这8本最适用的程序员好书给你. 1.UNIX环境高级编程(第3版)(豆瓣评分9.6)UNIX编程圣经 与Linux相结合的 ...
- python编程快速上手自动化_《Python编程快速上手 让繁琐工作自动化》完整版PDF...
image.png <Python编程快速上手 让繁琐工作自动化>完整版PDF 提取码:7qm4 3.jpg 有关本书 累计销售超过10万册 零基础编程者的不二之选 基于Python3编写 ...
- 《Python编程快速上手——让繁琐工作自动化》第2版的中文版上市了
第2版基于Python3.X重磅升级,更新内容超30%,不仅更新了众多项目案例,还加强了立体化学习体验,增加了随书视频.在线编程练习环境和社群互助学习体验. 这本书成功破圈编程界,为零基础.从未接触过 ...
- 一周新书榜:西瓜书伴侣、Python编程快速上手第2版上榜
3月份的程序员专业书很多,好书也多,上榜书更多,真是万物复苏,好书排排站,刚给大家推荐完Linux新书,又迎来周志华教授"西瓜书"<机器学习>公式完全解析指南的< ...
- python快速上手 让繁琐工作自动化 英文版_入门python:《Python编程快速上手让繁琐工作自动化》中英文PDF+代码...
入门推荐学习<python编程快速上手>前6章是python的基础知识,通俗易懂地讲解基础,初学者容易犯错的地方,都会指出来.从第三章开始,每章都有一个实践项目,用来巩固前面所学的知识. ...
- 《Python编程快速上手 让繁琐工作自动化》pdf
<div id="article_content" class="article_content tracking-ad" data-mod=" ...
- python编程快速上手第三章_Python编程快速上手 往让繁琐工作自动化-6.6 习题(示例代码)...
Python编程快速上手 往让繁琐工作自动化-6.6 习题 1.什么是转义字符? 答:转义字符表示字符串中的一些字符,这些字符用别的方式很难在代码中打印出来. 2.转义字符\n和\t代表什么? 答:\ ...
- 导入python标准数学函数模块的语句_《Python编程快速上手——让繁琐工作自动化》——2.8 导入模块...
本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第2章,第2.8节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...
- 《Python编程快速上手——让繁琐工作自动化》——第一部分 Python编程基础 第1章 Python基础 1.1 在交互式环境中输入表达式...
本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第1章,第1.1节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...
最新文章
- 第二章、IP协议详解
- 即使是一个技术人员,也需要知道沟通的重要性
- 近100年来全球20家顶尖公司成功原因揭秘
- spring项目属性注入和bean管理xml 注入一般属性和集合属性
- php oracle 锁表,频繁使用的一张表经常好被锁死?怎样处理!
- 数据结构(Java)——迭代器和列表的实例
- java string对象创建对象_Java String 创建了几个对象
- 弄潮儿数据_SINX 信息数据的“弄潮儿”
- 关于mybatis中type-aliases-package使用的几个问题
- Java基本数据类型的转换
- js 去除空格回车换行
- 【python】Tkinter可视化窗口(一)
- linux的mysql不允许连接_linux下允许mysql远程连接
- 数据新闻的四大发展特点
- 枪毙ctfmon.exe 恢复你的默认输入法
- 采集侠的自动crontab脚本
- sam格式的结构和意义_SAMtools: SAM格式的处理利器
- 九大背包问题专题--背包问题求方案数
- gird布局几种用法
- 连手机热点宿主机无法连上VMvare linux Centos
热门文章
- 网络笔记(23)移动网络:去巴塞罗那,手机也上不了脸书
- 拟合值或估计值给字母上尖帽操作(mathtype)
- 求圆锥的底面积,表面积,体积 -C语言初学者
- 工行网银自动退出[96111945]验证码输入错误或已经超时失效解决方案
- 启航独家资料-考研英语长难句基本句型分析(2)
- 一篇文章,掌握所有开源数据库的现状
- 贝塞尔曲线打断生成两个贝塞尔曲线
- mysql router安装教程_3.(MySQL Router+MGR)MySQL Router安装与配置
- matlab中normcdf函数用法,Matlab中标准正态分布的密度函数是normcdf(x,0,1)
- implicitly[Ordering[T]]