目录
一、题目描述
开房查询
创建函数,传入一个名字,查找到这哥们所有的开房记录,然后写入到以这哥们名字为名的txt文件中 如:张三.txt
二、解析
1、获取文件的内容
先用上下文管理器打开文件,然后再从对象中读取信息,readlines()是一行一行的读取数据,每一行作为一个字符串存储在列表中
with open('kaifanglist.txt','r',encoding='utf-8',newline='') as fp:
# print(date)
date = fp.readlines()
2、信息匹配
函数的功能是传入一个名字,然后将开房记录写到以此名字命名的文件夹中,此时需要完成的就是姓名去和传入的名字进行匹配;而此时的信息是以一整个字符串存储在一个列表中,要想得到姓名,则需要对字符串进行处理,一种是将字符串按照逗号切割,得到的是一个个的列表,此时将列表再存入列表中,得到的就是一个二维的列表;此时所要的姓名就是以单个字符串存储在二维列表中也就是s[i][0],然后进行判断即可;
第二种方法相对第一种简单,但是有局限性;字符串有一个方法是判断是否已指定的字符串开始
3、写入文件
再进行判断之后,把相应的数据写入文件夹即可,因为数据可能有多条,所以写入的方式要是追加的形式(a),如果用w则会对之前的内容进行覆盖,文件中就只有最后一条信息
三、源码
# -*- coding: utf-8 -*-
import json
def search(name):
s = []
with open('kaifanglist.txt','r',encoding='utf-8',newline='') as fp:
date = fp.readlines()
# print(date)
for i in range(len(date)): # eval()可以识别字符串,然后将字符串转化成元组存储起来,然后可以继续对元组操作,将其转化为列表,方便取值以及操作
print(date[i].split(','))
for j in range(len(s)):
if name == s[j][0]:
with open(f'{name}.txt','a',encoding='utf-8') as file:
t = json.dumps(s[j])
file.writelines(t)
if __name__ == '__main__':
search('孙旸')
def test(name):
with open('kaifanglist.txt', 'r',encoding="utf-8") as f,open(f'{name}.txt','w',encoding='utf-8') as f1:
l1 = f.readlines()
for i in l1:
if i.startswith(f'{name},'):
f1.write(i)
test('徐争鸣')