PFBZSC 发表于 2020-4-9 23:06:48

优化小甲鱼Python教程第29讲的代码

感觉小甲鱼在旧版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

冬雪雪冬 发表于 2020-4-9 23:49:17

文件最后一行没有========,无法转到else,无法保存文件

PFBZSC 发表于 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

冬雪雪冬 发表于 2020-4-10 14:30:33

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

我弄错了,但是如果每一行都打开写入关闭文件,效率是比较低的。

PFBZSC 发表于 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并且重新关闭旧文件并重新打开新文件
页: [1]
查看完整版本: 优化小甲鱼Python教程第29讲的代码