Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用一个文件中的文本搜索第二个文件中的匹配项_Python_Regex_String_Search - Fatal编程技术网

Python 使用一个文件中的文本搜索第二个文件中的匹配项

Python 使用一个文件中的文本搜索第二个文件中的匹配项,python,regex,string,search,Python,Regex,String,Search,我正在linux上使用python 2.6 我有两个文本文件 first.txt在每行上都有一个文本字符串。看来 洛雷姆 IPU asfd 第二个文件的格式不完全相同。 看起来更像这样 1231洛雷姆 1311助理31 1 等 我想从first.txt中获取每一行文本,并确定第二个文本中是否有匹配项。如果没有匹配,那么我想将丢失的文本保存到第三个文件中。我想忽略这个案例,但并非完全必要。这就是为什么我在看regex,但运气不太好 因此,我正在打开这些文件,使用readlines()创建一个列表。

我正在linux上使用python 2.6

我有两个文本文件 first.txt在每行上都有一个文本字符串。看来

洛雷姆
IPU
asfd

第二个文件的格式不完全相同。 看起来更像这样

1231洛雷姆
1311助理31 1

我想从first.txt中获取每一行文本,并确定第二个文本中是否有匹配项。如果没有匹配,那么我想将丢失的文本保存到第三个文件中。我想忽略这个案例,但并非完全必要。这就是为什么我在看regex,但运气不太好

因此,我正在打开这些文件,使用readlines()创建一个列表。
遍历列表并打印匹配项

这是我的密码

first_file=open('first.txt', "r")
first=first_file.readlines()
first_file.close()

second_file=open('second.txt',"r")
second=second_file.readlines()
second_file.close()

while i < len(first):
  j=search[i]
  while k < len(second):
   m=compare[k]
   if not j.find(m):
    print m
   i=i+1
   k=k+1
exit() 
first\u file=open('first.txt',“r”)
first=第一个文件。readlines()
第一个文件。关闭()
第二个文件=打开('second.txt',“r”)
second=second_file.readlines()
第二个_文件。关闭()
而我(第一个):
j=搜索[i]
当k

这绝对不优雅。有人对如何修复此问题或更好的解决方案提出建议吗?

假设您正在第二个文件中查找整行:

second_file=open('second.txt',"r")
second=second_file.readlines()
second_file.close()


first_file=open('first.txt', "r")
for line in first_file:
    if line not in second:
        print line

first_file.close()

我的方法是:读取第二个文件,将其转换为小写,然后创建一个包含单词的列表。然后将此列表转换为,以便更好地处理大文件

然后检查第一个文件中的每一行,如果它(也转换为小写,并删除额外的空格)不在我们创建的集合中,则将其写入第三个文件

with open("second.txt") as second_file:
    second_values = set(second_file.read().lower().split())

with open("first.txt") as first_file:
    with open("third.txt", "wt") as third_file:
        for line in first_file:
            if line.lower().strip() not in second_values:
                third_file.write(line + "\n")
集合对象是一种简单的容器类型,无序且不能包含重复的值。它的设计允许您快速添加或删除项目,或告知项目是否已在集合中

with
语句是确保文件关闭的一种方便方法,即使发生异常。默认情况下,从Python2.6开始,它们是启用的。在Python2.5中,它们要求您在文件的顶部放置一行
from\uuuuuu future\uuuuu import with\u语句


中的
运算符执行听起来的操作:告诉您是否可以在集合中找到值。当与列表一起使用时,它只是像您的代码一样进行迭代,但是当与set对象一起使用时,它使用哈希来执行更快的操作<代码>不在
中则相反。(可能的混淆点:
中的
也用于定义
循环(
用于[1,2,3]
中的x),但这是无关的。)

是否应该
lorem
也匹配
somelorem
?整条线应该是一样的吗?应该只有单词是相同的吗?