鱼C论坛

 找回密码
 立即注册
查看: 1416|回复: 4

[技术交流] 优化小甲鱼Python教程第29讲的代码

[复制链接]
发表于 2020-4-9 23:06:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
感觉小甲鱼在旧版Python教程的第29讲些的代码太麻烦了。。。
其实可以写成:
f = open('对话.txt')
x=1
for each_line in f:
   
    if each_line[:6] != "======":
        #需要区分小甲鱼和小客服说的内容
        (role,line_spoken) = each_line.split(':',1)        
        if role == '小甲鱼':
            #保存到boy_*.txt
            f1 = open('boy_'+str(x)+'.txt','a')
            f1.write(line_spoken)
            f1.close()
        else:
            #保存到gril_*.txt
            f1 = open('gril_'+str(x)+'.txt','a')
            f1.write(line_spoken)
            f1.close()        
    else:
        #需要分段
        x+=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-9 23:49:17 | 显示全部楼层
文件最后一行没有========,无法转到else,无法保存文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 12:08:43 | 显示全部楼层
冬雪雪冬 发表于 2020-4-9 23:49
文件最后一行没有========,无法转到else,无法保存文件

测试过没问题的,会分成三个文件。检测======只是用来给a+1。
a默认是1,boy和gril的就会被分开写入boy_1.txt和gril_1.txt,检测到======后给a加1,之后的就会写入boy_2.txt和gril_2.txt里,再遇到======又会加1,变成boy_3.txt和gril_4.txt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 14:30:33 | 显示全部楼层
PFBZSC 发表于 2020-4-10 12:08
测试过没问题的,会分成三个文件。检测======只是用来给a+1。
a默认是1,boy和gril的就会被分开写入boy_ ...

我弄错了,但是如果每一行都打开写入关闭文件,效率是比较低的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 18:05:27 | 显示全部楼层
冬雪雪冬 发表于 2020-4-10 14:30
我弄错了,但是如果每一行都打开写入关闭文件,效率是比较低的。

修改了一下:

x=1
f = open('D:\\desktop\\对话.txt')
def openf():
    global f1,f2
    f1 = open('boy_'+str(x)+'.txt','a')
    f2 = open('gril_'+str(x)+'.txt','a')
def closef():
    f1.close()
    f2.close()
openf()
for each_line in f:
    if each_line[:6] != "======":
        #需要区分小甲鱼和小客服说的内容
        (role,line_spoken) = each_line.split(':',1)        
        if role == '小甲鱼':
            #保存到boy_*.txt
            f1.write(line_spoken)   
        else:
            #保存到gril_*.txt
            f2.write(line_spoken)            
    else:
        #需要分段
        x+=1
        closef()
        openf()
closef()


多了7行,改成了执行前打开文件,然后写入,遇到======x+=1并且重新关闭旧文件并重新打开新文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 05:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表