day18 综合练习:实现手机通讯录(下)
学习日期:20240925
学习目标:内置数据类型--27 小试牛刀:如何使用类型转换实现手机通讯录(下)
学习笔记:
实现手机通讯录
案例文件
with open('27-demo.csv') as f:file_data=f.readlines()print(file_data)
# [',张三,同事,13511112222\n', '1,李四,朋友,13566668888\n', '2,王五,同事,13566667777\n']# 安装软件包并导入当前代码
# pip3 install tinydb # 安装到虚拟环境
from tinydb import TinyDB# 指定存放通讯录的文件
db = TinyDB('db.json')# 将csv格式的文件,进行格式转换,并存入到通讯录文件
friend_1={'name':file_data[0].split(',')[0],"source":file_data[0].split(',')[1],'tel':file_data[0].split(',')[2].strip()}
friend_2={'name':file_data[1].split(',')[0],"source":file_data[1].split(',')[1],'tel':file_data[1].split(',')[2].strip()}
friend_3={'name':file_data[2].split(',')[0],"source":file_data[2].split(',')[1],'tel':file_data[2].split(',')[2].strip()}
'''
问题:
1.假如文件中有更多的行怎样简便处理?----学完循环再完善
2.怎样知道已经处理完所有的行了?----学完异常再完善
3.如果文件格式不规范怎么办?----类型的嵌套,学完模板再完善
4.这么写很啰嗦,有没有更优雅的写法?----学完类再完善'''# 将通讯录中的好友写进数据库 每执行一次会插入一次数据
db.insert_multiple([friend_1,friend_2,friend_3
])# 查看通讯录中全部好友
print(db.all())
# [{'name': '', 'source': '张三', 'tel': '同事'}, {'name': '1', 'source': '李四', 'tel': '朋友'}, {'name': '2', 'source': '王五', 'tel': '同事'}]# 根据姓名查电话
from tinydb import Query
friend =Query()
friend_info = db.search(friend.name == '张三')
print(friend_info) # [{'name': '张三', 'source': '同事', 'tel': '13511112222'}]print(f'{friend_info[0]['name']} 的电话是 {friend_info[0]['tel']}') # 张三 的电话是 13511112222# TinyDB 是纯python实现的数据库
# 它还能实现支持更新,删除,复杂查询等操作
# 更多功能请参考官方文档
# https://pypi.org/project/tinydb/
总结
- 数据处理就是将非结构化数据转换成结构化数据的过程
- 利用不同的数据类型可以方便对文章进行数据分析
- 编程除了结果正确外,可读性也是好的程序标准,可以为复杂的程序适当增加变量