Python文本操作
Posted searchforyou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于Python文本操作的主要内容,如果未能解决你的问题,请参考以下文章