本帖最后由 txxcat 于 2020-4-13 23:37 编辑
你的文件格式不大适合用pandas处理,pandas最好是存成csv格式,象这样:书号,书名,箸者,现存量,总库量
001,零基础入门学习Python,小甲鱼,22,30
002,Python袖珍指南,Mark Lutz,11,19
我就按你提供的格式来进行处理,文件内容这样:书号:001 书名:零基础入门学习Python 箸者:小甲鱼 现存量:22 总库量:30
书号:002 书名:Python袖珍指南 箸者:Mark Lutz 现存量:11 总库量:19
代码如下,只是演示,没有容错功能:#模拟输入,库存假设已经处理为整数
book_num='003'
book_name='零基础入门学习C'
book_author='小甲鱼'
book_standing=10
book_total=10
f=open('图书数据.txt',encoding='utf-8')
allbook=[]
newbook=True
for i in f:
if book_num==i[3:i.find('书名')].strip(): #如果发现存在,就把库存数字化进行处理后加入列表
book_standing+=int(i[(i.find('现存量')+4):i.find('总库量')].strip())
book_total+=int(i[(i.find('总库量')+4):].split('\n')[0].strip())
content=i[:i.find('现存量')+4]+str(book_standing)+' 总库量:'+str(book_total)+'\n'
newbook=False #如果发现存在,则不是新书
else:
content =i #其他没动的直接加入列表
allbook.append(content)
if newbook: #如果是新书,加入到列表中
content =('书号:%s 书名:%s 箸者:%s 现存量:%s 总库量:%s\n' % \
(book_num,book_name,book_author,book_standing,book_total))
allbook.append(content)
f.close()
f=open('图书数据.txt','w',encoding='utf-8') #覆盖老文件
f.writelines(allbook) #把经过处理的列表写入到文件
f.close()
|