1、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成批量修改操作
import os
'''
egon is 大帅比
egon is 流弊
'''
def update_file(src_file, select_content, dsc_content):
'''
修改文件功能
参数: 文件地址 ,原内容 ,新内容
'''
with open(r'{}'.format(src_file), mode='r', encoding='utf-8')as f:
res = f.read()
res1 = res.replace(f'{select_content}', f'{dsc_content}')
with open(r'{}'.format(src_file), mode='w', encoding='utf-8')as f1:
f1.write(res1)
return '修改成功'
tag = True
while tag:
src_file = input('请输入源文件地址:').strip()
if os.path.exists(src_file):
with open(r'{}'.format(src_file), mode='r', encoding='utf-8')as f:
res = f.read()
print('{}'.format(res))
while True:
select_content = input('请输入想要修改的内容:').strip()
if select_content in res:
dsc_content = input('请输入内容修改为:').strip()
msg = update_file(src_file, select_content, dsc_content)
print(msg)
tag = False
break
else:
print('内容不存在,请重新输入!')
continue
else:
print('源文件不存在,请重新输入地址!')
结果展示:
请输入源文件地址:/Users/tophan/2020_python/day13/a.txt
egon is 大帅比
egon is 流弊
请输入想要修改的内容:tank
内容不存在,请重新输入!
请输入想要修改的内容:egon
请输入内容修改为:tank
修改成功
2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
def count(res):
'''统计字符功能'''
list1 = [] #数字组
list2 = [] #字母组
list3 = [] #空格组
list4 = [] #其他组
for i in res:
if i.isnumeric():
list1.append(i)
elif i.isalpha():
list2.append(i)
elif i.isspace():
list3.append(i)
else:
list4.append(i)
print(f'数字个数:{len(list1)},字母格式:{len(list2)},空格个数:{len(list3)},其他个数{len(list4)}')
count('hello world 123 #@$') #数字个数:3,字母格式:10,空格个数:3,其他个数3
3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def len_judge(*args):
# print(args)
if len(args) > 5:
return True, f'长度为{len(args)}'
else:
return False, f'长度为{len(args)}'
a = 'hello'
b = ['a', 2, 'hh', '你好']
c = (1, 3, 'a', '你好', '11', 22)
flag, msg = len_judge(*a)
print(flag, msg) #False 长度为5
flag, msg = len_judge(*b)
print(flag, msg) #False 长度为4
flag, msg = len_judge(*c)
print(flag, msg) #True 长度为6
4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def len_list(res):
if len(res) > 2:
res = res[0:2]
return res
res = len_list(['11', 22, '你好'])
print(res) #['11', 22]
5、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def check_num(obj):
list1 = []
for i in obj:
if not obj.index(i) % 2:
list1.append(i)
return list1
res = check_num([1,2,3,4,5,6,7])
print(res) #[1, 3, 5, 7]
res = check_num((1,2,3,4,5,6,7))
print(res) #[1, 3, 5, 7]
6、写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
def check_len(obj):
# print(obj.values(),type(obj.values()))
for i in obj:
if len(obj[i]) > 2:
obj[i] = obj[i][0:2]
return obj
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
res = check_len(dic)
print(res) #{'k1': 'v1', 'k2': [11, 22]}
选做作业:见https://www.cnblogs.com/xy-han/p/12513083.html