大小写转换
def chnum(x):
str_num=str(x)
result=''
d={1:'壹',2:'贰',3:'叁',4:'肆',5:'伍',
6:'陆',7:'柒',8:'捌',9:'玖',0:'零'}
for s in str_num:
result=result+d[int(s)]
#查找的时候按照数字来找的键
#所以要进行一次数据类型转换
return result
a=int(input('请输入要转换的数字'))
b=chnum(a)
print(b)
为了简化,可以在import后面加上as和简称
import 大小写转换2 as num
a=int(input('请输入要转换的数字'))
b=num.chnum(a)
print(b)
链式调用
当每个环节的函数都必须能返回一个对象;且该对象必须支持下一步需要调用的方法。
>>> a=[3,5,2,1]
>>> a.sort().reverse()
但是这上面sort后面并不能返回对象,所以语句错误
>>> a=[3,5,2,1]
>>> a.sort(reverse=True)
>>> a
[5, 3, 2, 1]
利用reverse这一属性,一步到位
例如
s = ' ab c de '
n = s.upper()
m = n.strip()
s = m.replace('C','x')
t = s.split()
t.reverse()
print(t)
合并为
s = ' ab c de '
t = s.upper().strip().replace('C','x').split()
t.reverse()
print(t)
合并字符串
name='jindaohei'
age=29
s=f'我是{name},{age}岁,我很{{菜}}'
#f语句用来合并句子,两个花括号用来转义
print(s)
交换数据
>>> a=3
>>> b=4
>>> c=5
>>> d=1
>>> a,b,c,d=d,a,b,c
>#对应位置交换
>>> a
1
>>> b
3
>>> c
4
>>> d
5
题目一
请编写一个“倒排正整数”的函数。该函数接收一个正整数作为参数,并能返回该整数的倒置形式。
比如,假设该函数名为 reverse_num(),那么执行 print(reverse_num(7382)) 后,会显示一个数字:2837 。
注意:返回值必须也是一个整数,而不是 ‘2837’ 这样的字符串。
def reverse_num(x):
s=list(str(x))
s.reverse()
t=''.join(s)
return int(t)
import 倒排正整数 as m
b=input('请输入要倒排的数字')
d=m.reverse_num(b)
print(d)
调取最新股票数据
先加载
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tushare
#通过清华镜像高效得多
>>> import tushare as ts
>>> print(ts.get_today_all())
调用Excel
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xlwings
>>> import xlwings
>>> xlwings.App()
#App一定要这样写,大小写敏感的,启动一个Excel
Books属性
>>> import xlwings as xw
>>> app1=xw.App()
>>> app1.books.add()
#新建一个book,得到两个Excel文件
app1.books.open('G:/网课/杨洋VBA/全民一起VBA实战篇(Excel数据分析)/14-19年学生成绩.xlsm')
#打开程序
>>> wb=app1.books.open('G:/网课/杨洋VBA/全民一起VBA实战篇(Excel数据分析)/14-19年学生成绩.xlsm')
>>> wb.save('D:/test.xlsm')
#另存为新的文件
批量添加工作簿
for i in range(10):
wb.sheets.add()
修改工作簿名字
>>> ws=wb.sheets.add()
>>> ws.name="jindaohei"
清空数据
>>> ws.clear()
找到指定名称的工作簿
ws=wb.sheets['锦到黑']
找到对应range对象
>>> r=ws.range('A1:E2')
>>> r.value=123.
>>> print(r.value)
[[123.0, 123.0, 123.0, 123.0, 123.0], [123.0, 123.0, 123.0, 123.0, 123.0]]
#读出的就是列表
给range赋值
>>> x=ws.range('F3')
#定义x为一个range
>>> x.value=r.value
#将r赋值给x,r为二维列表,即以F3为左上角赋值
把股票数据写入Excel里面
import tushare as ts
import xlwings as xw
#引入模块
x=ts.get_today_all()
#从网络上读取数据
app=xw.App()
#建立Excel文件
wb=app.books.add()
#建立工作表
ws=wb.sheets[0]
#指定工作簿
ws.range('B2').value=x
wb.save('D:/股票数据.xlsx')
wb.close()
app.quit()
#赋值保存关闭退出
调用VBA宏
import xlwings as xw
app=xw.App()
wb=app.books.open('G:/地图填色.xlsm')
m=app.macro('full_color')
#把宏赋值给m
m.run()
#运行VBA宏
app.quie()
简单操作
import xlwings as xw
app = xw.App()
wb = app.books.open('d:/test.xlsx')
ws = wb.sheets['工资单']
x = ws.range('C4:C10').value
ws.range('D12').value = sum(x)/len(x)
x = ws.range('D4:D10').value
ws.range('D13').value = sum(x)/len(x)'
wb.save()
app.quit()
题目
首先请自己编写本节视频课程的演示案例,通过tushare模块取得股票数据并写入一个Excel工作簿。
接下来,请再编写一个程序,从该工作簿中找出代码为603977、603939、300322、300257、300008或其他股票的数据,并将这几行数据保存到另一个Excel工作簿中。
示例代码:(假设全部股票数据在stocks.xlsx中)
import xlwings as xw
stock_codes = [603977,603939,300322,300257,300008]
result = []
app = xw.App()
wb = app.books.open('d:/demo/stocks.xlsx')
all_stocks = wb.sheets[0].range('A2:P3702').value
#判断是否存在,用s遍历数据,判断是否存在于列表中
for s in all_stocks:
if s[1] in stock_codes:
result.append(s)
wb2 = app.books.add()
wb2.sheets[0].range('A1').value = result
wb2.save('d:/demo/result.xlsx')
app.quit()
文件处理技巧
获取一个文件夹下所有文件的名字
>>> import os
>>> x=os.listdir('E:\杂七杂八的文件\TEST')
>>> print(x)
['2013.7班学生档案.xls', '2015级体测公示.xlsx', '2020电磁场毕业设计导师通讯录.xlsx']
读取一个文件夹下的Excel文件数据
import xlwings as xw
import os
app=xw.App()
r='E:/杂七杂八的文件/TEST'
x=os.listdir(r)
for i in x:
if i[-5:].lower()=='.xlsx' or i[-4:].lower()=='.xls':
#用来判断是否是Excel文件
wb=app.books.open(r+'/'+ i)
ws=wb.sheets[0]
print(ws.range('c2').value,ws.range('c6').value)
wb.close()
app.quit()
但listdir读不了子文件的内容
就要用os.walk
import os
for i in os.walk('E:\学习\大四上\多媒体技术'):
print(i)
('E:\\学习\\大四上\\多媒体技术', ['专业英语大作业'], ['多媒体1.pdf', '多媒体3.pdf', '多媒体4.pdf', '多媒体5.pdf', '多媒体6.pdf', '多媒体7.pdf', '多媒体8-9.pdf', '多媒体作业.psd', '多媒体作业2.psd', '多媒体技术.doc', '多媒体技术.docx', '多媒体技术题目.docx'])
('E:\\学习\\大四上\\多媒体技术\\专业英语大作业', ['专业英语大作业', '第2组 学号最后两位除以三余数为1', '第3组 学号最后两位除以三余数为2'], ['6页.pdf', '6页_1_6_translate.pdf', '9页.pdf', '9页_1_9_translate.pdf', '9页翻译.docx', '说明.txt'])
('E:\\学习\\大四上\\多媒体技术\\专业英语大作业\\专业英语大作业', ['第1组 学号最后两位除以三余数为0'], [])
('E:\\学习\\大四上\\多媒体技术\\专业英语大作业\\专业英语大作业\\第1组 学号最后两位除以三余数为0', [], [])
('E:\\学习\\大四上\\多媒体技术\\专业英语大作业\\第2组 学号最后两位除以三余数为1', [], ['10页.pdf', '9页.pdf'])
('E:\\学习\\大四上\\多媒体技术\\专业英语大作业\\第3组 学号最后两位除以三余数为2', [], ['16页.pdf'])
可以得到一个元组,第零为目录名,第二位文件名
import os
for i in os.walk('E:\学习\大四上\多媒体技术'):
r=i[0]
f=i[2]
for s in f:
print(r+'/'+s)
import os
for r,d,f in os.walk('E:\学习\大四上\多媒体技术'):
#也可以这样写,进行对应位置的解包
for s in f:
print(r+'/'+s)
两者结合一下
通过os.walk遍历
import os
import xlwings as xw
app=xw.App()
for i in os.walk('E:/学习'):
r=i[0]
# 第零个存的是目录名
f=i[2]
# 第二个存的是文件名
for s in f:
if s[-5:].lower()=='.xlsx':
wb=app.books.open(r+'/'+s)
ws=wb.sheets[0]
print(ws.range('c2').value)
wb.close()
app.quit()
给文件重命名
首先要安装一个pinyin模块
pip install -i https://pypi.doubanio.com/simple jieba
但是由于我重装了系统,虽然pip装的库都在,但是查看pip list会报错
fatal error
于是可以选择重新装一下pip
python -m pip install --upgrade pip
#这里upgrade前面是- - 两个,我开始搞错了一直没成功
将汉字转为拼音
>>> import pinyin
>>> s=pinyin.get('你好呀')
>>> print(s)
nǐhǎoyā
可以设置可选参数,不要加上音调
>>> s=pinyin.get('你好呀',format='strip')
>>> print(s)
nihaoya
import os
import pinyin
for r,d,f in os.walk('E:\学习\大四上\多媒体技术'):
for s in f:
new_name=pinyin.get(s,format='strip')
os.rename(r+'/'+s,r+'/'+new_name)