请给我一个比较2个.csv文件的python脚本,我想将其更改为比较2个.txt文件。第一个.txt文件包含3列ID,第二个.txt文件包含具有ID的Fasta序列。我想要一个比较两个文件的脚本:当第一个文件的第一列或第三列中的ID(忽略第二列,因为它与第一列相同)时,从第二个文件中找到其匹配项,则输出应为来自第一个文件的ID,然后是紧跟该ID的Fasta序列。谢谢! :)
with open('data1.csv', 'r') as f:
for line in f.readlines():
line = line.replace("\n", "")
full_name = line.split('\t')
accession_x = full_name[0]
with open('data2.csv', 'r') as f1:
for line1 in f1.readlines()[1:]: # ignores the first line
line1 = line1.replace("\n", "")
full_name1 = line1.split(' ')
accession_y = full_name1[0].replace(" ", "")
accession_z = full_name1[1].replace(" ", "")
main_accession = accession_x + " " + accession_z + " " + accession_y
if accession_x == accession_z:
print(main_accession)
答案 0 :(得分:1)
首先,必须将文件名从“ data1.csv”更改为“ data1.txt”,从“ data2.csv”更改为“ data2.txt”。
第二:取决于文本文件的格式。您当前的代码假定第一个文件中的行由制表符分隔,第二个文件中的行由空格分隔。这可以从split('\ t')和split('')中看出。如果这个假设成立,那么代码应该可以工作。
希望这会有所帮助!
答案 1 :(得分:0)
由于您仅描述了文件的格式,因此很难提供确切的代码,但是我做了一些假设,并根据它们做出了一个假设。
with open('file1.txt', 'r') as f1:
for line1 in f1.readlines():
l1 = line1.strip().split('\t')
with open('file2.txt', 'r') as f2:
for line2 in f2.readlines():
l2 = line2.strip().split(' ')
if l1[0] == l2[0]:
print(l1[0] + " " + l2[1] + " " + l2[0])
elif l1[1] == l2[0]:
print(l1[1] + " " + l2[1] + " " + l2[0])
这些假设是