Python 查找两个文本文件的差异

Python 查找两个文本文件的差异,python,pandas,string,sequence,bioinformatics,Python,Pandas,String,Sequence,Bioinformatics,我有两个独立的文件A和B,超过100000行。现在我需要比较每一行,看看它们是否在A中,而不是B中。两个文件都是文本格式 文件A: >Q63544|9 ----------------------MDVFKKGFSIAREGVVGAVEKTKQGVTEAAEKTKEGVMY >Q63544|51 KTKQGVTEAAEKTKEGVMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKT >Q63544|54 QGVTEAAEKTKEGVMYVGT

我有两个独立的文件
A
B
,超过100000行。现在我需要比较每一行,看看它们是否在
A
中,而不是
B
中。两个文件都是文本格式

文件A:

>Q63544|9
----------------------MDVFKKGFSIAREGVVGAVEKTKQGVTEAAEKTKEGVMY
>Q63544|51
KTKQGVTEAAEKTKEGVMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKT
>Q63544|54
QGVTEAAEKTKEGVMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEE
>Q63544|67
VMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRK
>Q63544|72
TKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRKEDLEP
>Q63544|73
KTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRKEDLEPP
>Q63544|51
KTKQGVTEAAEKTKEGVMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKT
>Q63544|54
QGVTEAAEKTKEGVMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEE
>Q63544|67
VMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRK
>Q63544|73
KTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRKEDLEPP
文件B:

>Q63544|9
----------------------MDVFKKGFSIAREGVVGAVEKTKQGVTEAAEKTKEGVMY
>Q63544|51
KTKQGVTEAAEKTKEGVMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKT
>Q63544|54
QGVTEAAEKTKEGVMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEE
>Q63544|67
VMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRK
>Q63544|72
TKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRKEDLEP
>Q63544|73
KTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRKEDLEPP
>Q63544|51
KTKQGVTEAAEKTKEGVMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKT
>Q63544|54
QGVTEAAEKTKEGVMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEE
>Q63544|67
VMYVGTKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRK
>Q63544|73
KTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRKEDLEPP
我需要的:A-B

>Q63544|9
----------------------MDVFKKGFSIAREGVVGAVEKTKQGVTEAAEKTKEGVMY 
>Q63544|72
TKTKGERGTSVTSVAEKTKEQANAVSEAVVSSVNTVATKTVEEAENIVVTTGVVRKEDLEP

任何帮助或建议都将不胜感激。

您可以尝试
正则表达式

重新导入
#这里我把它作为文本,但是你可以像text_1=open('file_1.txt')那样读取文件
text_1=“”>Q63544|9
----------------------MDVFKKGFSIAREGVVGAVEKTKQGVTEAAEKTKEGVMY
>Q63544 | 51
KTKQGVTEAEKTKEGVMYVGTTKGERGTSVTSVAEKTKEQANVSEAVVSVNTVAKT
>Q63544 | 54
QGVteaaektkegVMyvgtkgergtsvtsvaektkeqanavsavssvntvatvee
>Q63544 | 67
Vmyvgtktkgergtsvtsvaektkeqanavseavvsvntvatktveaenivvttgvrk
>Q63544 | 72
Tktkgergtsvtsvaektkeqanavseavvsvntvatktveeenivvttgvrkedlep
>Q63544 | 73
ktkgergtsvtsvaektkeqanavseavvsvntvatveeenivvttgvrkedlepp“”
text_2=“”>Q63544| 51
KTKQGVTEAEKTKEGVMYVGTTKGERGTSVTSVAEKTKEQANVSEAVVSVNTVAKT
>Q63544 | 54
QGVteaaektkegVMyvgtkgergtsvtsvaektkeqanavsavssvntvatvee
>Q63544 | 67
Vmyvgtktkgergtsvtsvaektkeqanavseavvsvntvatktveaenivvttgvrk
>Q63544 | 73
ktkgergtsvtsvaektkeqanavseavvsvntvatveeenivvttgvrkedlepp
"""
protein_1={i[0]:如果len(i[0])>0,则re.findall(r'^>Q63544 |(\d+)\n(.*),text_1,re.MULTILINE)中i的i[1]
protein_2={i[0]:如果len(i[0])>0,则re.findall(r'^>Q63544 |(\d+)\n(.*),text_2,re.MULTILINE)中的i的i[1]
异种_蛋白={i:protein_1[i]表示蛋白质_1中的i,如果我不在蛋白质_2}
打印(列表(不同的蛋白质值())
或者如果你想要那种特定的格式

异种蛋白质中i,j的
output=[f'>Q63544{i}\n{j}'
对于输出中的i:
印刷品(一)

NOTR:我假设所有蛋白质编号都以
Q63544

开头,也要检查。这表明堆栈溢出的需求范围太广。我可能会使用trie数据结构来解决这个问题。将其中一个文件中的数据加载到trie中,然后针对第二个文件中的每个条目,搜索trie以查看该项是否存在。您可以在每个端点节点中放置描述性元数据。