• 文件修改,map函数的一些练习


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

    # 输入文件名,被修改的内容,修改成的内容
    def update_file(file_name, updated, updating):
        import os
        if not os.path.exists(file_name):
            print('输入的文件不存在!')
            exit()
        new_file = file_name + '_bak'
        change_num = 0
        with open(file_name, 'r', encoding='utf-8') as f:
            with open(new_file, 'w', encoding='utf-8') as f_new:
                for line in f:
                    if updated in line:
                        new_line = line.replace(updated, updating)
                        change_num += 1
                    else:
                        new_line = line
                    f_new.write(new_line)
        os.replace(new_file, file_name)  # 覆盖原来的文件
        return '修改了%s处' % change_num
    
    
    print(update_file('update.txt', 'M', 'm'))
    

    2.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb

    l_name = ['alex', 'eric', 'penny']
    res = map(lambda x: x + '_sb', l_name)
    print(list(res))
    

    3.用filter函数处理数字列表,将列表中所有的偶数筛选出来

    num = [1, 3, 5, 6, 7, 8]
    res = filter(lambda x: x % 2 == 0, num)
    print(list(res))
    

    4.如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格

    portfolio = [
        {'name': 'IBM', 'shares': 100, 'price': 91.1},
        {'name': 'AAPL', 'shares': 50, 'price': 543.22},
        {'name': 'FB', 'shares': 200, 'price': 21.09},
        {'name': 'HPQ', 'shares': 35, 'price': 31.75},
        {'name': 'YHOO', 'shares': 45, 'price': 16.35},
        {'name': 'ACME', 'shares': 75, 'price': 115.65}
    ]

    计算购买每支股票的总价

    用filter过滤出,单价大于100的股票有哪些

    portfolio = [
        {'name': 'IBM', 'shares': 100, 'price': 91.1},
        {'name': 'AAPL', 'shares': 50, 'price': 543.22},
        {'name': 'FB', 'shares': 200, 'price': 21.09},
        {'name': 'HPQ', 'shares': 35, 'price': 31.75},
        {'name': 'YHOO', 'shares': 45, 'price': 16.35},
        {'name': 'ACME', 'shares': 75, 'price': 115.65}
    ]
    for item in portfolio:
        item['total_price'] = item['price'] * item['shares']
    print(portfolio)
    print(list(filter(lambda x: x['price'] > 100, portfolio)))
    

    序列化,反序列化

    pickle的方式:

    import pickle
    
    info = {'name': 'alex', 'age': '22'}
    with open('test.test', 'wb') as f:
        f.write(pickle.dumps(info))  # 序列化
        # pickle.dump(info, f)  # 跟上一句完全一个意思
    
    with open('test.test', 'rb') as f2:
        data = pickle.loads(f2.read())  # 反序列化
        # data = pickle.load(f2)    # 跟上一句完全一个意思
    print(data['age'])
    View Code

    json的方式:

    import json
    
    info = {'name': 'alex', 'age': '22'}
    with open('test.test', 'w') as f:
        # f.write(json.dumps(info))  # 序列化
        json.dump(info, f)  # 跟上一句完全一个意思
    
    with open('test.test', 'r') as f2:
        # data = json.loads(f2.read())  # 反序列化
        data = json.load(f2)    # 跟上一句完全一个意思
    print(data['age'])
    View Code
  • 相关阅读:
    Docker安装 Redis Stack(开发适配提供 Redis Stack 服务器和RedisInsight可视化) (6.2.2v3版本)
    Python从入门到入土第6课——列表
    深度学习基础基于Numpy的多层前馈神经网络(FFN)的构建和反向传播训练
    【JMeter】启动时报错Uncaught Exception java.lang.IllegalAccessError
    【JMeter】JMeter连接Mysql8.x数据库的坑
    【Selenium】报错 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
    【MYSQL】彻底卸载无安装版mysql
    【MYSQL转】Mysql8.0修改数据库密码
    【MYSQL】MYSQL常用命令
    【环境】如何搭建PHP开发环境(PHP+Apache+MySQL)
  • 原文地址:https://www.cnblogs.com/Simonsun002/p/8763654.html
Copyright © 2020-2023  润新知