Чтобы ввести вас в контексте моей проблемы: У меня есть два файла, содержащие информацию о генах:Найти общие элементы в 2 текстовом файле
pos.bed содержит позиции специфических генов и hg19-genes.txt содержит все существующих генов вида, с некоторыми указанными признаками, такими как положение генов (начало и конец), его название, его символ и т. д.
Проблема в том, что в pos указано только положение гена , но не его имя/символ. Я хотел бы прочитать оба файла и сравнить начало и конец в каждой строке. Если есть совпадение, я хотел бы получить символ соответствующего гена.
Я написал этот небольшой код Python:
pos=open('C:/Users/Claire/Desktop/Arithmetics/pos.bed','r')
gen=open('C:/Users/Claire/Desktop/Arithmetics/hg19-genes.txt','r')
for row in pos:
row=row.split()
start=row[11]
end=row[12]
for row2 in gen:
row2=row2.split()
start2=row2[3]
end2=row2[4]
sym=row2[10]
if start==start2 and end==end2:
print sym
pos.close()
gen.close()
Но, похоже, это только сравнивая строки двух файлов по линии (например, строка 2 в поз файлов с линией 2 в файле ген только) .so я пытался добавить еще к, если цикл, но я получаю сообщение об ошибке:
else:
gen.next()
StopIteration Traceback (most recent call last)
<ipython-input-9-a309fdca7035> in <module>()
14 print sym
15 else:
---> 16 gen.next()
17
18 pos.close()
StopIteration:
Я знаю, что можно сравнить все строки 2 файла, независимо от положения линии, делая что-то вроде:
same = set(file1).intersection(file2)
, но в моем случае я только хочу, чтобы сравнить несколько колонок каждой строки, так как строки имеют различную информацию в каждом файле (кроме начала и конца). Есть ли аналогичный способ сравнения строк в файлах, но только для некоторых определенных элементов?
Благодарим за быстрый и полезный ответ! –