竹茶 发表于 2019-2-22 14:26:18

python第29课的理解和疑问 求大佬解惑顺便看看我的思路有没有问题

本帖最后由 竹茶 于 2019-2-22 16:19 编辑

# 打开文件 1
f = open('record.txt')

#定义3个变量 5
boy = []
girl = []
count = 1 # 7

for each_line in f:                   # 把f加入循环这个加入循环相当于把f这个文件里的值全部检查一遍对这题而言个人通俗理解。。 也更加了解for2
    if each_line[:6] != '======':                      #如果each_line前6个字符不等于'======' 接上面 对此处有点疑问 [:6]不是检测前面6个字符吗 第一遍还解释的通为什么下面也能继续用难道\n?姑且这样 3
      (role, line_spoken) = each_line.split(':', 1)                   #则 左边为被赋值的对象,右边为值,split第一个参数为分割的参数,右边不晓得可能是往左边分割的意思-1是默认右边 4
      if role == '小甲鱼':                        #如果 上面那个role不是被赋予了分割的值了 所以如果等于‘小甲鱼’下面都是第6步6
            boy.append(line_spoken)                        #则右边被赋予被分割隔开的后面的值的line_spoken添加到boy这个列表中去
      if role == '小客服':                  # 接第3步骤 所以可能\n真的就是一次循环 可能? 所以如果是小客服
            girl.append(line_spoken)                      #则则右边被赋予被分割隔开的后面的值的line_spoken添加到boy这个列表中去
    else:                                             #否则 如果each_line[:6] == '======'
      file_name_boy = 'boy_' + str(count) + '.txt'                  # 这里在来个变量赋值因为视频任务要6个文件所以有了下面的步骤 8
      file_name_girl = 'girl_' + str(count) + '.txt'

      boy_file = open(file_name_boy, 'w')                        #这里就是给刚刚变量创文件了 9
      girl_file = open(file_name_girl, 'w')

      boy_file.writelines(boy)                        # wrint和writelines这2个方法在这里有了点了解 不过wrint是字符串到文件这里好像也可以用? 对了这里是把第5步的赋值了的变量放到文件里 10
      girl_file.writelines(girl)

      boy_file.close()                              # 老师一直强调的结束emmm 了解 11
      girl_file.close()

      boy = []                  # 因为值已经赋给了那个文件了且已经结束保存 所以这列表元素就清空不然下一次循环会继续存在 12
      girl = []
      count += 1                           #这里加一是为了文件名 第8步 哪里又说 是任务

file_name_boy = 'boy_' + str(count) + '.txt'                        #这里 视频里也说了因为保存文件的条件是 如果each_line[:6] == '======' 因为只有2个所以自己在写一个循环来补充 13
file_name_girl = 'girl_' + str(count) + '.txt'

boy_file = open(file_name_boy, 'w')
girl_file = open(file_name_girl, 'w')

boy_file.writelines(boy)
girl_file.writelines(girl)

boy_file.close()
girl_file.close()

f.close() # 最后结束 不能忘。。 14

724553598 发表于 2019-2-22 17:13:53

正在第九节课卡着呢

Will_M 发表于 2019-2-22 20:36:39

不是大神,但还是发表一下看法。首先整体思路只要跟着老师走当然没有问题,有问题的地方在于对细节理解不是很到位。第二步中不是检查一遍文件,而是迭代文件对象,依次取出文件的每一行,第三步不好意思没太明白你是说你哪里不清楚。。。第四步函数split()的两个参数,第一个是分隔符,第二个是最大分割次数。第十步write()本来就是把字符串写入文本中,而writelines()则是写入字符串列表。而这里要写入的东西明显是字符串列表,所以只能用writelines。

空python 发表于 2026-7-17 00:26:15

赞一个
页: [1]
查看完整版本: python第29课的理解和疑问 求大佬解惑顺便看看我的思路有没有问题