zoukankan      html  css  js  c++  java
  • Python文本操作

    #文本内容的替换
    import os # 导入os模块

    import time # 时间模块

    # 优点:不用关闭句柄, 自动关闭连接
    with open("唐诗", mode="r", encoding="utf-8") as f1,
    open("唐诗_副本", mode="w", encoding="utf-8") as f2:
    for line in f1:
    line = line.replace("善良", "sb")
    f2.write(line)

    time.sleep(5)
    os.remove("唐诗") # 删除源文件
    time.sleep(5)
    os.rename("唐诗_副本", "唐诗") # 把副本改名成源文件

    # 对有标题的文本处理(提取标题,把内容加入字典)
    f = open("水果.data", mode="r", encoding="utf-8")
    titles = f.readline().strip() # 读取第一行 id,name,price,num
    t_list = titles.split(",") # 【id,name,price,num】

    lst = []
    for line in f: # "1,苹果,500,60000" {id:1,name:liulian, num:xx, price:xxx}
    dic = {}
    ll = line.strip().split(",")
    for i in range(len(t_list)):
    dic[t_list[i]] = ll[i]
    lst.append(dic)
    f.close()
    print(lst)

    #修改文本变成另外的格式,并求和
    # name:apple price:10 amount:3 year:2012
    # name:tesla price:100000 amount:1 year:2013
    # .......
    #
    # 通过代码,将其构建成这种数据类型:
    # [{'name':'apple','price':10,'amount':3},
    # {'name':'tesla','price':1000000,'amount':1}......]
    # 并计算出总价钱。
    f = open("money.txt", mode="r", encoding="utf-8") # name:apple price:10 amount:3 year:2012
    result = []
    for line in f:
    dic = {}
    lst = line.split() # 根据空白切
    # 向字典中添加数据
    for el in lst:
    print(el) # name:apple第一行[0] price:10第二行[1]
    dic[el.split(":")[0]] = el.split(":")[1] # 数据已经添加完了# 放在列表中
    result.append(dic)
    print(result)
    # [{'name': 'apple', 'price': '10', 'amount': '3', 'year': '2012'},
    # {'name': 'tesla', 'price': '100000', 'amount': '1', 'year': '2013'}]
    sum = 0
    for el in result:
    sum += int(el['price']) * int(el['amount'])
    print(sum)
    -------------------------------------------------------------------------------------------
    以下是对字典dict{}/list[]/元祖(,)/集合set{}总结:

    dic增加

    # 流程: 1.先判断key是否存在。 如果存在,就不执行新增, 如果不存在, 执行新增
    dic.setdefault("宫本武藏", "很牛B")
    dic["王者荣耀"] = "最近我才知道" # dic[字典中不存在的key] = value

    dic删除

    # dic = {"张无忌":'倚天屠龙记', "紫薇":"还珠格格", "王语嫣":"天龙八部", "刘能":"乡村爱情协奏曲"}
    # dic.pop("刘能") # 指定某个key进行删除
    # dic.pop("王语嫣")
    # dic.popitem() # 实际上是随机删除的
    # dic.clear()
    # del dic["紫薇"]
    dic.update(dic2) # 把dic2中的内容覆盖到dic中(K不变)也相当于添加或修改
    列表和字典不能在循环的时候进行删除.
    把要删除的内容记录在一个新列表中。 然后循环新列表。 删除老列表(字典)

    dic 查询

    dic[key]
    # print(dic.get("小燕子")) # 当key不存在的时候不会报错。 默认返回None
    # print(dic.get("紫薇","没有")) # 两个参数. 如果第一个参数不存在。 返回第二个参数作为默认值, 如果存在直接返回value
    # print(dic.keys()) # 返回的内容像列表。但不是列表
    # for k in dic.keys(): # 可以迭代。 拿到的是每一个key
    #     print(k)
    # print(dic.values()) # 所有的value返回。 像列表。但不是列表
    # for v in dic.values():
    #     print(v)

    # print(dic.items()) # 返回键值对。 (key, value)
    # 遍历字典的最好的方案
    # for k, v in dic.items(): # item是元组 (key, value)
    #     print(k, v) # 直接拿到key和value

    List删除

    ret = lst.pop() # 返回值是被删除的元素

    list切片删除

    切片删除
    # del lst[2] # 类似pop
    # del lst[2:] # 批量删除
    # del lst[1:5:2] # 切片删除

    list清空列表

    # list.clear()

    list插入

    # 插入
    # lst.insert(0, "建国大业") # 插入, 效率不高. 索引的变更
    # lst.extend(["倚天屠龙记", "乡村爱情"])

    list新增

    # lst.append("找到你")

    list查询

    # for food in lst: # 列表可以使用for循环。 list是一个可迭代对象
    #     print(food)
    fromkeys()
        返回创建的新字典
        fromkeys("abc", [])
        {a:[], b:[], c[]}
    # 元组如果只有一个元素。必须加逗号
    # t1 = (1, 3, 5, 7, 9,) # () 运算符 优先级
    # lst = ["哈哈", ]
    # print(t1)
    # print(lst)

         元组的不可变. 元组的不可变指的是元组内部第一层元素的内存地址

    t = ("周润发", "周星驰", ["渣渣辉","古天绿","陈小春"])
    t[2].append("李嘉诚")
    print(t)
    # 字典:{}
    # 字典的key: 不可变,不能重复, 底层存储是无序的

    # 集合:{}set
    # 集合里的元素: 不可变,不能重复. 底层也是无序的。 hash

    # 集合其实就是字典. 集合里面不存value , 集合中只存储key
    # # 应用(重点) 去重复
    # lst = ["周杰伦", "周杰伦", "王力宏", "王力宏", "胡辣汤"]
    # s = set(lst) # 集合
    # print(s)
    # # 转化成列表
    # print(list(s))


    # frozenset 可哈希的集合, 不可变.
    s = frozenset([1,2,3,4,5])
    print(s) # frozenset({1, 2, 3, 4, 5})
    for el in s:
    print(el)
    # 1
    # 2
    # 3
    # 4
    # 5


  • 相关阅读:
    复利计算(修改后)
    复利计算测试(C语言)
    实验一、命令解释程序的编写
    《构建之法》之第一二三章读后感
    复利计算1.0 2.0 3.0
    复利计算总结
    Scrum 项目7.0——第一个Sprint的总结和读后感
    Scrum 项目7.0——第一个Sprint的演示和回顾
    Scrum 项目4.0&&5.0
    操作系统——进程调度模拟程序
  • 原文地址:https://www.cnblogs.com/searchforyou/p/9911278.html
Copyright © 2011-2022 走看看