for遍历文本问题
使用for循环遍历一个文本的数据,是遍历的字符吗,在小甲鱼Python0基础29讲当中,if each_line[:6]是什么意思 ,我看这是判断长度为6的一个数组#打开record.txt文件f = open('E:\\python\\record.txt')#定义3个变量,并对它们初始化boy = [] girl = []count = 0#循环读取文件for each_line in f: #如果当前内容不"======",则继续读取内容;否则读取,开始写操作if each_line[:6] != "======": #读取的内容以":"进行分割,分割后分别赋值给元组元素role和spoken (role,spoken) = each_line.split(':',1) #如果对话角色为"小甲鱼",则将文件追加到boy列表中 if role == '小甲鱼': boy.append(spoken) #如果对话角色为"小客服",则将文件追加到girl列表中 if role == '小客服': girl.append(spoken)else: #定义输出文件名称 file_name_boy = 'boy_'+str(count)+'.txt' file_name_girl = 'girl'+str(count)+'.txt' #打开文件 boy_file = open(file_name_boy,'w') girl_file = open(file_name_girl,'w') #writelines的参数是序列(比如列表),它会迭代帮你写入文件。 boy_file.writelines(boy) girl_file.writelines(girl) #关闭文件对象 boy_file.close() girl_file.close() #当前写操作完毕后,必须进行初始化操作,以准备下一个的写入操作 boy = [] girl = [] count += 1#因为第三段对话的结尾没有"===",所以需要再次进行上门的重复写操作,保存第三段对话#定义输出文件名称 file_name_boy = 'boy_'+str(count)+'.txt'file_name_girl = 'girl'+str(count)+'.txt'#打开文件 boy_file = open(file_name_boy,'w') girl_file = open(file_name_girl,'w') #writelines的参数是序列(比如列表),它会迭代帮你写入文件。 boy_file.writelines(boy) girl_file.writelines(girl) #关闭文件对象 boy_file.close() girl_file.close() #关闭文件对象f.close()
????? each_line[:6],each_line是读出文本文件的每一行,是个字符串,[:6]是对字符串进行分片,取前6个字符。 没粘贴好太乱了 还有,发代码用代码模式,就是图标中的一对尖括号。 txxcat 发表于 2020-4-17 15:04
each_line[:6],each_line是读出文本文件的每一行,是个字符串,[:6]是对字符串进行分片,取前6个字符。
这意思是ecah_line是一个关键字?不是随意命名得吗 czh1303541051 发表于 2020-4-17 15:06
这意思是ecah_line是一个关键字?不是随意命名得吗
不是,随便取名,象我一般喜欢for i in xxxx。 txxcat 发表于 2020-4-17 15:09
不是,随便取名,象我一般喜欢for i in xxxx。
那不对啊我感觉,for遍历文本数据的时候默认是读取行?而不是读取字符?我在这些代码里面没看出特定的读取行的代码啊 czh1303541051 发表于 2020-4-17 15:11
那不对啊我感觉,for遍历文本数据的时候默认是读取行?而不是读取字符?我在这些代码里面没看出特定的读 ...
open打开的文本文件对象是可以直接使用for循环迭代遍历的。 czh1303541051 发表于 2020-4-17 15:04
没粘贴好太乱了
你还是先你的帖子用代码模式修改一下吧。 txxcat 发表于 2020-4-17 15:20
你还是先你的帖子用代码模式修改一下吧。
没看到在哪儿编辑,没听懂你说的,open打开的文本for是怎么遍历的,按行遍历? czh1303541051 发表于 2020-4-17 15:36
没看到在哪儿编辑,没听懂你说的,open打开的文本for是怎么遍历的,按行遍历?
就是上面一片图标,有字体大小的那一栏,右边有两排小图标,有个<>,点击后把代码复制到窗口里就OK了,效果如下:
f = open('E:\\python\\record.txt') # 首先你打开文件赋值给f,f就是这个文件的对象了。
fori in f: #这一步就可以用for来对f进行迭代了,每次循环读出一行
print(i)
f.close()
txxcat 发表于 2020-4-17 15:09
不是,随便取名,象我一般喜欢for i in xxxx。
我都是 for each in xxxx: … _2_ 发表于 2020-4-17 15:49
我都是 for each in xxxx: …
一般我第一层i,第二层j,第三层k,以前写foxpro养成的习惯{:10_277:}。 txxcat 发表于 2020-4-17 15:48
就是上面一片图标,有字体大小的那一栏,右边有两排小图标,有个,点击后把代码复制到窗口里就OK了,效果 ...
这样确实是按行读取,原理能解释一下吗,不然我真有点接受不了,for遍历是按字符来的,这突然来个按行来,总不能解释为这是Python的特性吧 czh1303541051 发表于 2020-4-17 16:14
这样确实是按行读取,原理能解释一下吗,不然我真有点接受不了,for遍历是按字符来的,这突然来个按行来 ...
迭代的特性,以后会学到,现在不用要求一定理解。for只有对字符串迭代的时候才是按字符来的,对列表、元素、字典、集合是按元素来的,其实你可以理解为:字符串是以字符为元素组成的。 txxcat 发表于 2020-4-17 16:29
迭代的特性,以后会学到,现在不用要求一定理解。for只有对字符串迭代的时候才是按字符来的,对列表、元 ...
好的
页:
[1]