#从data.txt(Excel文件)中找出一些不在target.txt(TXT文件)文件行中出现的行。

#定义一个函数,判断ls中的每个单词是否出现在了mystring中了。如果全部都在,返回真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循环执行完毕,程序返回True
file1 = 'data.txt'
file2 = 'target.txt'
file_output = 'results.txt'       #output file name
file_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文件的某一行,立刻退出,判断下一行line1break                                   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结构也符合上述条件。'''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结构也符合上述条件。'''

从Excel文件中找出在TXT文件中没有出现的 行之_代码片段相关推荐

  1. 习题 9.5 建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

    C++程序设计(第三版) 谭浩强 习题9.5 个人设计 习题 9.5 建立一个对象数组,内放5个学生的数据(学号.成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成 ...

  2. 苹果笔记本怎么找文件夹_如何在苹果笔记本中找出 “~/Library/Preferences/” 文件夹?...

    一.iPhone访问限制密码找回教程(未越狱) 1.打开iTools,在左侧菜单栏找到"文件系统",依次打开/private/var/keychains/,在keychains文件 ...

  3. 解放文件夹下所有层级的特定格式文件,找出文件夹内所有的txt/FLAC/MP4/MP3等等等等,并复制到另一个文件夹中

    解放文件夹下所有层级的特定格式文件,找出文件夹内所有的txt/FLAC/MP4/MP3等等等等,并复制到另一个文件夹中 引言 代码 得意 天天学习,好好向上 引言 各位朋友们好!最近遇到一些想要方便办 ...

  4. Excel 中如何找出两列数据中不重复的记录

    现在有两列数据,要在 A 列中找出 B 列中没有的记录,在 B 列中找出 A 列中没有的记录.现在和大家分享一下这个方法. 我们先用一个简单的例子看一下.现在有两列数据,可以是分别在不同的数据单(sh ...

  5. linux误修改文件名恢复,如何在 Linux 中找出最近或今天被修改的文件-linux修改文件名...

    Linux 用户在命令行上遇到的常见问题之一是定位具有特定名称的文件,如果你知道确定的文件名则可能会容易得假设你忘记了白天早些时候创建的文件的名称(在你包含了数百个文件的 home 文件夹中),但现在 ...

  6. 找出两个文件内容的相同与不同

    此文略有自己改动(DOOM) 1  comm命令 在我们的开发和运营中,特别是对业务进行监控的时候,我们常常需要写一些监控shell脚本,而这些脚本需要求两个文件的共同的记录列表或者只出现在第一个文件 ...

  7. 程序员面试金典——解题总结: 9.18高难度题 18.5有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离

    #include <iostream> #include <stdio.h> #include <vector> #include <string> # ...

  8. Excel表格中如何找出并替换数据中某一固定范围内的值(包括空值)

    Excel表格中如何找出并替换数据中某一固定范围内的值(包括空值) 一.问题介绍 二.方法介绍 1.选中数据 2.按住Ctrl+H键,调出替换窗口 3.输入 " * ",并点击查找 ...

  9. 盘点一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列

    一.前言 前几天在Python交流群中遇到一个问了一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列的问题,觉得还挺有用的,这里拿出来跟大家一起分享下. 数据截图如下 ...

最新文章

  1. R语言-常用对象及元素类型
  2. Java实战equals()与hashCode()
  3. HttpContext.Current.Request.Url 地址:获取域名
  4. 二叉树的三叉链表存储和基本操作
  5. 企业架构 - 涉众管理(Stakeholder Management)
  6. 判断力有时候有多么重要?懂得选择多么重要?
  7. For循环案例---九九乘法表
  8. CentOS 6系统FreeSwitch和RTMP服务 安装及演示(四)
  9. SQLSERVER 2008 R2下载安装教程
  10. AI 之 OpenCvSharp 安卓手机摄像头识别人脸
  11. 计算机按姓氏笔画顺序排序规则,【姓氏文化】按姓氏笔画排序的原则
  12. java lame_音视频编解码——LAME
  13. 常用的JScript代码整理
  14. 如何选择正确的Node框架:Express,Koa还是Hapi?
  15. 老男孩--你记得当初的梦想吗
  16. 同城服务小程序开发的好处和功能方案介绍
  17. 堡垒机和跳板机的三大区别分析-行云管家
  18. APP开发的详细流程
  19. 编写程序计算圆的面积和周长
  20. 【FPGA】EDA技术综合设计 交通灯设计

热门文章

  1. kafka修改默认端口号
  2. 使用async读取异步数据
  3. ShellCode初体验
  4. pta 习题集 5-2 找出不是两个数组共有的元素 (5分)
  5. Android 内容提供器---简介
  6. Android 横屏启动activity,点击屏幕的单击、双击和长按事件
  7. linux (fc8) 下的IE
  8. PyTorch 1.0 中文文档:torchvision 参考
  9. Airflow 中文文档:教程
  10. 复杂性思维第二版 四、无标度网络