|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 竹茶 于 2019-2-22 16:19 编辑
# 打开文件 1
f = open('record.txt')
#定义3个变量 5
boy = []
girl = []
count = 1 # 7
for each_line in f: # 把f加入循环 这个加入循环相当于把f这个文件里的值全部检查一遍 对这题而言个人通俗理解。。 也更加了解for 2
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
不是大神,但还是发表一下看法。首先整体思路只要跟着老师走当然没有问题,有问题的地方在于对细节理解不是很到位。第二步中不是检查一遍文件,而是迭代文件对象,依次取出文件的每一行,第三步不好意思没太明白你是说你哪里不清楚。。。第四步函数split()的两个参数,第一个是分隔符,第二个是最大分割次数。第十步write()本来就是把字符串写入文本中,而writelines()则是写入字符串列表。而这里要写入的东西明显是字符串列表,所以只能用writelines。
|
|