Python 使用一个文件中的文本搜索第二个文件中的匹配项
我正在linux上使用python 2.6 我有两个文本文件 first.txt在每行上都有一个文本字符串。看来 洛雷姆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()创建一个列表。
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
?整条线应该是一样的吗?应该只有单词是相同的吗?