#python
#python
Вопрос:
Я пишу простую программу, которая позволяет мне сканировать список шаблонов (patterns.txt ) из 000 010 100 и т.д. против списка последовательностей (sequence.txt ) 010100100010 и т.д.
Программа должна возвращать #количество вхождений 0 и 1 в каждой строке в файле последовательности #количество вхождений каждого шаблона в списке шаблонов для каждой строки в файле последовательности
— мой текущий код выглядит следующим образом Я знаю, что это не выглядит много, но я действительно новичок в этом и стараюсь изо всех сил —
#reading and opening files
file1 = open('patterns.txt', 'r')
file2 = open('sequences.txt', 'r')
targetSeq = "001010101010000101011100010101"
#storing the lines in patterns.txt as list using slicing
with open('patterns.txt', 'r') as file1:
patternList = file1.readlines()
print(patternList)
with open('sequences.txt' , 'r') as file2:
#converting into list
sequencelist = file2.readlines()
for line in sequencelist:
type = line.split(',')
print(sequencelist)
count = sequencelist.count(0)
print(count)
* моя главная проблема здесь в том, что я не знаю, как я могу сканировать каждую строку в file2 по шаблонам в file1 и выдавать отдельные строки в соответствии с образцом вывода. был бы очень признателен за любую помощь.
[output sample][1]
[1]: https://i.stack.imgur.com/wWqSU.png
Ответ №1:
Вам нужно будет использовать вложенные циклы. Несколько вещей были неясны, например, как вычисляется сходство. Вы можете использовать приведенный ниже шаблон для перебора данных.
with open('patterns.txt', 'r') as file1:
patternList = file1.readlines()
with open('sequences.txt' , 'r') as file2:
#converting into list
sequencelist = file2.readlines()
for line in sequencelist:
# is sequences.txt comma-separated or line separated or both?
# I'm assuming it's line separated
print(sequencelist)
count = sequencelist.count('0')
print(count)
for pattern in patternList:
print(f"Number of occurrences of {pattern} : {len(re.findall(pattern, sequencelist))}"
Кроме того, обратите внимание, что это re.findall()
было только из головы. Вы должны углубиться и попробовать создать свой собственный логический блок или изучить другие доступные эффективные варианты.
Ответ №2:
Это должно быть что-то вроде этого:
for line in sequencelist:
for pattern in patternList:
# Code to compare sequence with pattern
.
.
.