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章)相关推荐

  1. python编程快速上手项目答案-python编程快速上手之第5章实践项目参考答案

    1 #!/usr/bin/env python3.5 2 #coding:utf-8 3 #5.6.1 4 #好玩游戏的物品清单 5 #给定一个字典,包含物品名称和数量,并打印出数量对应的物品 6 7 ...

  2. python编程快速上手 让繁琐工作自动化 豆瓣_2019年,这些豆瓣评分9.0以上的8本程序员好书你都知道吗?...

    豆瓣这些9.0以上的高评分程序员好书你都知道有哪些吗?小编去豆瓣看了一下,推荐这8本最适用的程序员好书给你. 1.UNIX环境高级编程(第3版)(豆瓣评分9.6)UNIX编程圣经 与Linux相结合的 ...

  3. python编程快速上手自动化_《Python编程快速上手 让繁琐工作自动化》完整版PDF...

    image.png <Python编程快速上手 让繁琐工作自动化>完整版PDF 提取码:7qm4 3.jpg 有关本书 累计销售超过10万册 零基础编程者的不二之选 基于Python3编写 ...

  4. 《Python编程快速上手——让繁琐工作自动化》第2版的中文版上市了

    第2版基于Python3.X重磅升级,更新内容超30%,不仅更新了众多项目案例,还加强了立体化学习体验,增加了随书视频.在线编程练习环境和社群互助学习体验. 这本书成功破圈编程界,为零基础.从未接触过 ...

  5. 一周新书榜:西瓜书伴侣、Python编程快速上手第2版上榜

    3月份的程序员专业书很多,好书也多,上榜书更多,真是万物复苏,好书排排站,刚给大家推荐完Linux新书,又迎来周志华教授"西瓜书"<机器学习>公式完全解析指南的< ...

  6. python快速上手 让繁琐工作自动化 英文版_入门python:《Python编程快速上手让繁琐工作自动化》中英文PDF+代码...

    入门推荐学习<python编程快速上手>前6章是python的基础知识,通俗易懂地讲解基础,初学者容易犯错的地方,都会指出来.从第三章开始,每章都有一个实践项目,用来巩固前面所学的知识. ...

  7. 《Python编程快速上手 让繁琐工作自动化》pdf

    <div id="article_content" class="article_content tracking-ad" data-mod=" ...

  8. python编程快速上手第三章_Python编程快速上手 往让繁琐工作自动化-6.6 习题(示例代码)...

    Python编程快速上手 往让繁琐工作自动化-6.6 习题 1.什么是转义字符? 答:转义字符表示字符串中的一些字符,这些字符用别的方式很难在代码中打印出来. 2.转义字符\n和\t代表什么? 答:\ ...

  9. 导入python标准数学函数模块的语句_《Python编程快速上手——让繁琐工作自动化》——2.8 导入模块...

    本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第2章,第2.8节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...

  10. 《Python编程快速上手——让繁琐工作自动化》——第一部分 Python编程基础 第1章 Python基础 1.1 在交互式环境中输入表达式...

    本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第1章,第1.1节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...

最新文章

  1. 第二章、IP协议详解
  2. 即使是一个技术人员,也需要知道沟通的重要性
  3. 近100年来全球20家顶尖公司成功原因揭秘
  4. spring项目属性注入和bean管理xml 注入一般属性和集合属性
  5. php oracle 锁表,频繁使用的一张表经常好被锁死?怎样处理!
  6. 数据结构(Java)——迭代器和列表的实例
  7. java string对象创建对象_Java String 创建了几个对象
  8. 弄潮儿数据_SINX 信息数据的“弄潮儿”
  9. 关于mybatis中type-aliases-package使用的几个问题
  10. Java基本数据类型的转换
  11. js 去除空格回车换行
  12. 【python】Tkinter可视化窗口(一)
  13. linux的mysql不允许连接_linux下允许mysql远程连接
  14. 数据新闻的四大发展特点
  15. 枪毙ctfmon.exe 恢复你的默认输入法
  16. 采集侠的自动crontab脚本
  17. sam格式的结构和意义_SAMtools: SAM格式的处理利器
  18. 九大背包问题专题--背包问题求方案数
  19. gird布局几种用法
  20. 连手机热点宿主机无法连上VMvare linux Centos

热门文章

  1. 网络笔记(23)移动网络:去巴塞罗那,手机也上不了脸书
  2. 拟合值或估计值给字母上尖帽操作(mathtype)
  3. 求圆锥的底面积,表面积,体积 -C语言初学者
  4. 工行网银自动退出[96111945]验证码输入错误或已经超时失效解决方案
  5. 启航独家资料-考研英语长难句基本句型分析(2)
  6. 一篇文章,掌握所有开源数据库的现状
  7. 贝塞尔曲线打断生成两个贝塞尔曲线
  8. mysql router安装教程_3.(MySQL Router+MGR)MySQL Router安装与配置
  9. matlab中normcdf函数用法,Matlab中标准正态分布的密度函数是normcdf(x,0,1)
  10. implicitly[Ordering[T]]