删除两个文件中不常见的行,但保留文件结构

2024-09-24 06:34:29 发布

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

我有两个文件,我想保留文件1的结构(保留带“>;”的行),删除文件1和文件2中不常见的行。示例:

文件1:

>countries
 France
 Italy
>cities
 Rome

文件2:

France

所需输出(删除不常用行,保留“>;”行):

>countries
 France 
>cities

有什么想法吗?你知道吗


Tags: 文件gt示例结构countriescitiesfrancerome
3条回答

我会加载国家,你想保留在一个列表中,你正在通过一个列表文件。如果行中有>字符,则将其附加到新的输出列表中;如果行位于File 2,则也将其附加到输出列表中。然后遍历输出列表中的每一项并将其写入输出文件。你知道吗

with open("test.txt", "r") as file1:
    file1Lines = file1.readlines()
with open("test2.txt", "r") as file2:
    countriesToKeep = file2.readlines()

newFileLines = []
for line in file1Lines:
    if ">" in line:
        newFileLines.append(line)
    elif line.strip() in countriesToKeep:
        newFileLines.append(line)

with open("output.txt", "w") as output:
    for line in newFileLines:
        output.write(line)

试试这个

with open("f1.txt") as file1:
    file1Lines = file1.readlines()
with open("f2.txt") as file2:
    countriesToKeep = file2.readlines()
file1Lines = [i.strip() for i in file1Lines]
countriesToKeep = [i.strip() for i in countriesToKeep]
newFileLines = []
for line in file1Lines:
    if line.startswith(">"):
        newFileLines.append(line)
    elif line in countriesToKeep:
        newFileLines.append(" "+line)

with open("output.txt", "w") as output:
    for line in newFileLines:
        output.write(line+"\n")

一行版本:

print '\n'.join(filter(lambda x: x.startswith('>') or x in map(lambda x: x.strip(), open('file2.txt').readlines()), map(lambda x: x.strip(), open('file1.txt').readlines())))

相关问题 更多 >