如何打印不包含来自其他fi的任何字符串的文件行

2024-06-01 08:09:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个文件,希望在第二个文件中找到所有不包含第一个使用python的字符串的行。在

文件1:

Apples
Frogs
Beans
Dogs
Lemons
Oranges

文件2:

Frogs THAKJD
Beans THSHSKOO
Cats HHLFKDKDOS
Dogs PHOODLLSI PSODIW
Lemons OOPOETHTH ROROR
Berries GGHLSKSKSJD JSJSJS
Apples THKDHS
Oranges EHTHTJEJ

期望输出:

Berries GGHLSKSKSJD JSJSJS
Cats HHLFKDKDOS

我开始编写这个脚本(如下),但后来意识到它会打印出第二个文件中不包含第一个文件中每个单词的每一行,以及第一个文件的每次迭代。谁能帮忙吗?在

^{pr2}$

Tags: 文件字符串dogscatsorangesapplesbeanslemons
3条回答

一切正常,您只需更改最后一次loop

for record in open(sys.argv[2], 'r'):
    if record.split()[0] not in headers:
        print(record.strip())

Cats HHLFKDKDOS
Berries GGHLSKSKSJD JSJSJS

可以使用集合运算符

import sys

headings = set(open(sys.argv[1], "r").read().split('\n'))

for record in open(sys.argv[2], 'r'):
    r = set(record.split(' ')
    if len(headings.intersection(r)) == 0:
        print record

下面是一段工作代码:

expected_lines = [line.strip() for line in open('file1', 'r').readlines()]
absent_lines = []

for line in open('file2', 'r'):
    exists = False
    for expected in expected_lines:
        if expected in line:
            exists = True

    if not exists:
        absent_lines.append(line.strip())

print absent_lines

输出:

^{pr2}$

它的作用

1提取预期行

expected_lines = [line.strip() for line in open('file1', 'r').readlines()]

这一行创建file1中所有被剥离的行的列表(stripped以删除每行末尾的\n

2。初始化输出列表

absent_lines = []

这只是一个列表,您将在其中存储要输出的行

3。在文件2中循环&查找缺少的行

for循环只在file2中的行上迭代,并检查当前file2行中是否没有来自{}的预期行。在

因为您想测试字符串中是否存在一组单词,所以在确保这些单词中有任何一个存在之前,您必须遍历所有这些单词集。在

4。如果没有匹配项,则附加到输出列表

    if not exists:
        absent_lines.append(line.strip())

如果您不想存储输出而只打印输出,那么您可以将absent_lines.append(line.strip())替换为print line

相关问题 更多 >