【问题标题】:How to confirm if some substrings from one file are contain in the other file? [duplicate]如何确认一个文件中的某些子字符串是否包含在另一个文件中? [复制]
【发布时间】:2020-06-12 06:04:44
【问题描述】:

我有2个文件如下,并尝试查找file2的哪个子字符串在file1中:

file1.txt:

NP_001106283
MRIISRQIVLLFSGFWGLAMGAFPSSVQIGGLFIRNTDQEYTAFRLAIFLHNTSP
NP_001106697
MYLSRFLSIHALWVTVSSVMQPYPLVWGHYDLCKTQIYTEEGKVWD

file2.txt

RIISRQIVLL
AABBCCDD
SRFLSIHAL
BBBBCCEE

想要的结果:

RIISRQIVLL
SRFLSIHAL

我尝试过的代码,但不起作用:

with open("file1.txt", mode="r") as file1, open("file2.txt", mode="r") as file2:
    data=file1.read()
    for line in file2:
        if line in data:
            print(line)        

有什么建议或帮助吗? 谢谢。

【问题讨论】:

  • 你的代码有什么问题?
  • replace 'if line if line in data:' try with ' if line.strip() in data:' 它应该可以工作

标签: python string file substring


【解决方案1】:

只需添加 line.strip() 你的代码就可以了。

with open("xyz.txt", 'r') as file1, open("second.txt", 'r') as file2, open('output.txt', 'w') as output:
    data=file1.read()
    for line in file2:
        if line.strip() in data:            
            output.write(line)

我试过了

xyz.txt

NP_001106283
MRIISRQIVLLFSGFWGLAMGAFPSSVQIGGLFIRNTDQEYTAFRLAIFLHNTSP
NP_001106697
MYLSRFLSIHALWVTVSSVMQPYPLVWGHYDLCKTQIYTEEGKVWD

second.txt

RIISRQIVLL
AABBCCDD
SRFLSIHAL
BBBBCCEE

输出:

RIISRQIVLL
SRFLSIHAL

【讨论】:

  • 但是如果我想将输出写入另一个文件,我该怎么做呢?
  • @Eric 代码已更新以将输出写入另一个文件。
【解决方案2】:

试试这个方法

with open('file1.txt') as f1, open('file2.txt') as f2:
    lines_f1 = '-'.join(f1.read().split())
    lines_f2 = f2.read().split()
    for line in lines_f2:
        if line in lines_f1:
            print(line)

'-' 用作分隔符,因此如果要搜索的任何字符串中包含“-”,则可以使用任何其他分隔符。

【讨论】:

  • 也可以,谢谢
【解决方案3】:

您的数据可能在末尾包含 \n

with open("file1.txt", mode="r") as file1, open("file2.txt", mode="r") as file2:
    data=file1.read()

    for line in file2:

        if line.replace("\n", "") in data:
            print(line)  

您可以尝试通过以下命令打印行来检查实际文本

print(repr(line))

【讨论】:

  • 不,您可以直接遍历打开的文件。
  • @KlausD.,现在更正了!!!
  • 干得好,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 2011-02-05
  • 2013-03-24
  • 2017-03-05
相关资源
最近更新 更多