从Excel文件中找出在TXT文件中没有出现的 行之_代码片段
来源:互联网 发布:淘宝卖家怎么开直通车 编辑:程序博客网 时间:2024/05/21 08:42
#从data.txt(Excel文件)中找出一些不在target.txt(TXT文件)文件行中出现的行。
def listContain(ls, mystring): for s in ls: #取出ls中的每个单词 if s not in mystring: return False #如果ls中只要有一个单词不在mystring行,返回错误,函数运行结束 #如果s在mystring里面,继续进行下一轮for循环,也就是测试下一个单词是否存在mystring中,确认所有单词都出现在mystring里,返回true #else: #return True #return语句用来从一个函数 返回 即跳出函数。我们也可选从函数 返回一个值 return True #如果ls中每个单词都出现在了mystring中,相当于for循环没有执行,该函数返回真#return 这里不能修改下吗?逻辑如何运转的。如果返回了一个False,后面的return就不用运行了吗?#return运转如下:如果ls中有个单词都没有出现在mystring中,就返回错误,程序就结束了(不会执行最后返回真的语句),#如果ls一个单词出现在mystring句子中,继续通过for循环判断下一个单词是否出现在mystring中,如果所有单词都出现在mystring中,#,for循环执行完毕,程序返回Truefile1 = 'data.txt'file2 = 'target.txt'file_output = 'results.txt' #output file namefile_output_less = 'results_less.txt'lines1 = open(file1).readlines()lines2 = open(file2).readlines()if lines1 and lines2: for line1 in lines1: l1 = line1.replace('"', '').split() #删除每行的引号,然后切片变成列表 for line2 in lines2: #对列表中的每个元素进行处理,对目标文档进行每行搜索,看看l1是否存在其中的任何一行中 if listContain(l1, line2):#如果为真,也就是l1中所有单词都出现在line2里了,然后退出if,for循环,进入for循环,调出下一个l1句子 #问题1:如果为假,就应该输出该line1行到文件,不用犹豫;如果为假,程序如何进行 break #问题4:这种情况什么都不做,退出循环,程序去了哪里?退出if循环还是for循环 #Python break语句,就像在C语言中,打破了最小封闭for或while循环.如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码 #else: #open(file_output, 'a').write(line1) #这样写会导致同一个line1对多个line2进行判断,我们只要判断line1没有出现, #就输出line1,然后直接判断下一个line1,而不是看同一个line1是否出现在lines2的其他行,导致同一个line1重复多次输出 else: #问题2:else是对应哪个if,删除前面的if后,对结果没有影响啊,删除else,报缩进错误 open(file_output,'a').write(line1) #if为假,说明l1中有一个单词没有出现在line2中,就把该行写进文件里 #当l1通过for循环对lines2的每一场进行确定,l1确实不在lines2里面,自动会运行到else语句,这个else和for line2配套的,和C语法有点区别 #写入文件后,应该进行下一个line1的判断了,不用判断lines2里面的东西 #说明以前对行进行的各种处理都是临时的 #break #问题5:我添加break让程序自动跳到下一行line1为啥不行?程序提示open缩进有问题lines3 = open(file_output).readlines()for line3 in lines3: if 'n.a.' not in line3: open(file_output_less,'a').write(line3)
##############################################分割线#################################################
'''for line1 in lines1: #逐行取出lines1内容 l1 = line1.replace('"', '').split() #对line1进行切片处理 for line2 in lines2: if listContain(l1, line2): #如果line1包含在task文件的某一行,立刻退出,判断下一行line1 break else: #如果line1不在lines2的所有行里,就执行else语句,把该line1语句添加进文件里 open(file_output,'a').write(line1) 关键代码分析:'''################################################分割线####################'''else的描述,不只是if有,while和for都有else分支。循环体的else分支触发条件是循环正常结束。如果循环内被break跳出,就不执行break后紧跟的else。所以这个逻辑是:如果循环内break了,不触发else,则执行下一句外层循环中的break;如果正常结束,执行else分支里的continue,直接跳转到外层循环的下一轮,跳过了第二个break。for和while的else子句用于循环后处理,仅在循环正常结束时执行。问题中所举的例子,设置一个flag变量,代码看起来会更直观一些。难说哪种写法好,我倒挺喜欢用else分支的。作者:Coldwings链接:https://www.zhihu.com/question/37076998/answer/70307714来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。for … else结构下1.for里面的语句和普通的(没有else的for语句)没有区别;2.else中的语句会在循环正常执行完后执行;3.当for中语句通过break跳出而中断时,不会执行else。最后总结一句,for ... else结构一般要和break一起使用,才能体现这个结构的强大之处(至少我是这么觉得的,不知还有什么其他情况,希望网友不吝赐教)。while ... else结构也符合上述条件。'''
阅读全文
0 0
- 从Excel文件中找出在TXT文件中没有出现的 行之_代码片段
- 从Excel文件中找出在TXT文件中没有出现的行之_TXT文件_大风项目
- 从Excel文件中找出在TXT文件中没有出现的 行之Excel文件内容
- 在一个txt中 用分割线分割的文本片段 分离成单个txt文件
- 从Excel中读取内容写入txt文件中
- MATLAB中批量从txt文件中读取指定行的数据保存为txt文件
- Java中从txt文件中读取和存储内容出现乱码的解决之道一:
- Java中从txt文件中读取和存储内容出现乱码的解决方法
- 读取文件(.txt、.excel、.csv),在c++、matlab环境中
- 如何在BIGEMAP中打开excel、txt、dat文件
- 如何在BIGEMAP中打开excel、txt、dat文件
- 如何在BIGEMAP中打开excel、txt、dat文件
- 如何在BIGEMAP中打开excel、txt、dat文件
- 关于javascript从txt文件中读取内容出现乱码的问题
- 写一个程序,从文件(c:\test.txt)中查出字符串”mobnet”出现的次数?
- 找出两文件中相同的行,两文件不同的行,文件1有文件2没有的行
- 从txt文件读取数据显示在文本框中
- 在Windows命令行窗口中输入并运行PHP代码片段(不需要php文件)的方法
- 点击事件,选择按钮,点击从前端传到后台,查询数据,并返回前段,显示出来。---tp5
- MQTT协议学习与在Java(Android通用)中的使用
- 将HTML的<style>样式,变为行内样式
- 在Vue中使用Vuex进行状态管理指南
- AlphaGo人肉臂黄士杰:我的使命完成 阿尔法狗项目结束 | 重磅
- 从Excel文件中找出在TXT文件中没有出现的 行之_代码片段
- cookie和session的区别
- JS学习笔记day1
- Kettle日志输出到文件方法
- 虚拟机安装CentOS 7, 安装Docker CE
- FPGA:下一代机器人感知处理器
- 从零开始,阅读一篇人工智能论文
- 使用xshell第一次连接时,可能会连接多次才能连上,出现:WARNING!The remote SSH server rejected X11 forwarding request.
- “捡垃圾”都被骗,闲鱼的二手梦会否变成噩梦?