文本文件(.csv文件可以作为文本文件处理)中保存了图书馆藏书信息,每条藏书记录占一行 数据字段说明: LIBRARY_ID:藏馆ID(可能有多个藏馆) REC_CTRL_I:录入编号 BOOK_BARCO:图书条码 DEPARTMENT:所属部门 BOOK_SEARC:索书号 TITLE:图书名称 ISN:ISBN出版号 AUTHORS:作者 PUBLISHER:出版社 PUBDATE_DA:出版时间 BOOK_ATTRI:图书属性 BOOK_STATU:图书状态 (用函数定义,不用pandas)列出所有书名中包括“开发”字样的藏书和这些藏书所属的出版社,函数定义(不用pandas)统计每个出版社的”开发“字样藏书数量,用函数定义(不用pandas)按照该藏书数量降序输出,数量相同按照出版社名字升序。用函数定义(不用pandas)将书名,出版社名,和结果写入result.txt文件中
时间: 2024-03-04 08:51:10 浏览: 90
好的,这里是一个实现你要求的函数定义:
```python
def search_books(filename):
# 打开文件
with open(filename, 'r', encoding='utf-8') as f:
# 初始化字典,用于统计每个出版社的“开发”藏书数量
publishers = {}
# 初始化列表,用于存储所有包含“开发”字样的藏书信息
books = []
# 遍历每一行记录
for line in f:
# 将每行记录按照逗号分隔成字段
fields = line.strip().split(',')
# 获取图书名称和出版社
title = fields[5]
publisher = fields[8]
# 如果书名中包含“开发”字样
if '开发' in title:
# 将该藏书信息加入books列表中
books.append((title, publisher))
# 更新该出版社的“开发”藏书数量
if publisher in publishers:
publishers[publisher] += 1
else:
publishers[publisher] = 1
# 将books列表按照出版社名字升序排列
sorted_books = sorted(books, key=lambda x: x[1])
# 将字典按照“开发”藏书数量降序排列,数量相同按照出版社名字升序排列
sorted_publishers = sorted(publishers.items(), key=lambda x: (-x[1], x[0]))
# 将结果写入result.txt文件
with open('result.txt', 'w', encoding='utf-8') as f:
for title, publisher in sorted_books:
f.write(f'{title}\t{publisher}\n')
f.write('\n')
for publisher, count in sorted_publishers:
f.write(f'{count}\t{publisher}\n')
```
你可以将文件名作为参数传递给这个函数,它会输出所有书名中包括“开发”字样的藏书和这些藏书所属的出版社,并统计每个出版社的“开发”藏书数量。最后,它会将书名、出版社名和排序结果写入result.txt文件中。
阅读全文