Day 17 字符编码and文件处理

来源:互联网 发布:faker知乎 编辑:程序博客网 时间:2024/06/05 15:58

1、写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改操作

def change(file_name,f_old,f_new):    import os    with open(file_name,'r',encoding='utf-8') as read_f, \            open('file_name.swp', 'w', encoding='utf-8') as write_f:        for line in read_f:            if f_old in line:                line = line.replace(f_old, f_new)            write_f.write(line)    os.remove(file_name)    os.rename('file_name.swp',file_name)change('b.txt','alex','egon')with open('b.txt',encoding='utf-8') as f:    print(f.read())



2、写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数

def ro1(str):    numbers, letters, spaces, etc = 0,0,0,0    for i in str:        if i.isdigit():            numbers +=1        elif i.isalnum():            letters +=1        elif i.isspace():            spaces +=1        else:            etc +=1    return(numbers, letters, spaces, etc)print(ro1('hello world 233 53 26'))

3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def ro2(object):    if isinstance(object,str) or isinstance(object,list)\        or isinstance(object,tuple):        if len(object)>5:            return True        else:            return False    return Noneprint(ro2('hello world 233 53 26'))print(ro2('hell'))print(ro2(212))

4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def ro3(obj):    ret = False    for i in obj:        if i =='':            ret =True    return retprint(ro3('hello world'))print(ro3(['1','2 ','','k','4 ','3']))print(ro3((('x','1'),(''),(' z ',''))))

5、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,
并将新内容返回给调用者。
def ro4(obj1):    if len(obj1) > 2:        del obj1[2:]    return obj1print(ro4([1,2,'h','k','g',3]))

6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,
并将其作为新列表返回给调用者。
def ro5(obj2):    list = []    for i in range(1,len(obj2),2):            list.append(obj2[i])    return listprint(ro5([1,2,3,4,5,6,7,8,9,10]))

7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,
并将新内容返回给调用者。


dic = {"k1": "v1v1", "k2": [11,22,33,44]}
 
PS:字典中的value只能是字符串或列表

方法一:

def ro6(obj3):    for i in obj3:        if len(obj3[i]) > 2:            obj3[i] = obj3[i][0:2]    return obj3dic = {"k1": "v1v1", "k2": [11,22,33,44],"k3":"46846"}print(ro6(dic))
方法二:

def ro7(obj4):    ret = {}    for k,v in obj4.items()        if len(v) > 2:            ret[k] = v[0:2]        else:            ret[k] = v