鱼C论坛

 找回密码
 立即注册
查看: 1341|回复: 2

[已解决]29讲,为什么第一个j+=1处会报错

[复制链接]
发表于 2020-3-25 22:31:56 | 显示全部楼层 |阅读模式

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

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

x
#小甲鱼的对话单独保存为boy_*.txt,去掉”小甲鱼:“
#小客服的对话单独保存为girl_*.txt,去掉”小客服:“
#文件中一共有三段对话,分别保存为boy_1.txt,boy_2.txt,boy_3.txt
#以及girl_1.txt,girl_2.txt,girl_3.txt共6个文件
f=open(r"C:\Users\Administrator\Desktop\python\record.txt","r")
f.seek(0,0)                                      #从文件头开始
string=f.read()                                #讲txt里面的东西赋值给字符串string
boy_1=open(r"C:\Users\Administrator\Desktop\python\boy_1.txt",'a')
boy_2=open(r"C:\Users\Administrator\Desktop\python\boy_2.txt",'a')
boy_3=open(r"C:\Users\Administrator\Desktop\python\boy_3.txt",'a')
girl_1=open(r"C:\Users\Administrator\Desktop\python\girl_1.txt",'a')
girl_2=open(r"C:\Users\Administrator\Desktop\python\girl_2.txt",'a')
girl_3=open(r"C:\Users\Administrator\Desktop\python\girl_3.txt",'a')


sign=[0]                                        #存放换行符的位置,换行符是有每个句子结尾和句子开头都有
j=0                                               #一个换行符,例如‘女朋友?\n\n小甲鱼:咦???\n\n小客服:我跟:’
while string[j]!='-':
    for j in range(len(string)):                #max(sign)找最大值,越往后的换行符的位置参数越大,就是离当前换行符最近的那一个换行符的位置
        if string[j]=='\n' and  "小客服:" in string[max(sign),j]:
           boy_1.write(string[max(sign)+4,j]    #+4的目的是避免将”小甲鱼:“,”小客服:“放入文件中
           j+=1                                    #跳过第二个换行符,开始新一轮判别
           sign.append(j)                       #sign.append(j+1)存放换行符的位置
        else string[j]=='\n' and  "小甲鱼:" in string[max(sign),j] :
           girl_1.write(string[max(sign)+4,j]
           j+=1
           sign.append(j)

                                               
location_1=j                                         #存放第一次出现‘-’的位置
if string[location_1]=='-':                       #循环跳过所有的‘-’符号之后,在开始存放数据
   location_1+=1
else:
    while string[location_1]!='-':
        for m in range(location_1,len(string)):
            if string[m]=='\n' and  "小客服:" in string[max(sign),m]:
               boy_2.write(string[max(sign)+4,m]  #+4的目的是避免将”小甲鱼:“,”小客服:“放入文件中
               m+=1
               sign.append(m)
            else string[m]=='\n' and  "小甲鱼:" in string[max(sign),m] :
               girl_2.write(string[max(sign)+4,m]
               m+=1
               sign.append(m)

               
location_2=m                                                #存放第一次出现‘-’的位置
if string[location_2]=='-':                               #循环跳过所有的‘-’符号之后,在开始存放数据
   location_2+=1
else:
    while string[location_2]!='-':
        for n in range(location_2,len(string)):
            if string[n]=='\n' and  "小客服:" in string[max(sign),n]:
               boy_3.write(string[max(sign)+4,n]  #+4的目的是避免将”小甲鱼:“,”小客服:“放入文件中
               n+=1
               sign.append(n)
            else string[n]=='\n' and  "小甲鱼:" in string[max(sign),n] :
               girl_3.write(string[max(sign)+4,n]
               n+=1
               sign.append(n)
            
最佳答案
2020-3-25 22:36:56
不是j += 1处有错,是前面那句boy_1.write(string[max(sign)+4,j]漏了右括号
Python标红报错经常会标到别的地方,你前后看看语法错误在哪里就好了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-25 22:36:56 | 显示全部楼层    本楼为最佳答案   
不是j += 1处有错,是前面那句boy_1.write(string[max(sign)+4,j]漏了右括号
Python标红报错经常会标到别的地方,你前后看看语法错误在哪里就好了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-25 22:49:01 | 显示全部楼层
Hoiste 发表于 2020-3-25 22:36
不是j += 1处有错,是前面那句boy_1.write(string[max(sign)+4,j]漏了右括号
Python标红报错经常会标到别 ...

还可以这样,谢谢,学到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 11:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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