Наложение двух строк текста

#python #python-3.x

Вопрос:

Я новичок, пытающийся написать программу, которая может накладывать две строки текста друг на друга в соответствии с их расположением в спиральной структуре альфа в файле.

То, с чего я начинаю, — это список всех позиций, которые должны быть сокращены буквой «H» для спирали. Другие позиции следует сокращать буквой «-«.

Вывод должен выглядеть примерно так:

 ----HHHHH----                                                                         

ADGTHWEGAVGTY
 

У меня есть список со всеми позициями индекса H:

 [1, 2, 10, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 72, 73, 74, 75, 76, 77, 93, 96, 97, 98, 99, 100, 101, 102, 103, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 159, 160, 162, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 195, 196, 197, 198, 199, 200, 201, 202, 203, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 220, 229, 230, 231, 232, 233, 234, 240, 241, 249, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 311, 312, 313, 314, 315, 316, 332, 335, 336, 337, 338, 339, 340, 341, 342, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 398, 399, 400, 401, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 434, 435, 436, 437, 438, 439, 440, 441, 442, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 468, 469, 470, 471, 472, 473]
 

и список с последовательностью букв:

 ['Q', 'V', 'L', 'A', 'R', 'K', 'W', 'R', 'P', 'Q', 'T', 'F', 'A', 'D', 'V', 'V', 'G', 'Q', 'E', 'H', 'V', 'L', 'T', 'A', 'L', 'A', 'N', 'G', 'L', 'S', 'L', 'G', 'R', 'I', 'H', 'H', 'A', 'Y', 'L', 'F', 'S', 'G', 'T', 'R', 'G', 'V', 'G', 'K', 'T', 'S', 'I', 'A', 'R', 'L', 'L', 'A', 'K', 'G', 'L', 'N', 'C', 'E', 'T', 'G', 'I', 'T', 'A', 'T', 'P', 'C', 'G', 'V', 'C', 'D', 'N', 'C', 'R', 'E', 'I', 'E', 'Q', 'G', 'R', 'F', 'V', 'D', 'L', 'I', 'E', 'I', 'D', 'A', 'A', 'S', 'R', 'T', 'K', 'V', 'E', 'D', 'T', 'R', 'D', 'L', 'L', 'D', 'N', 'V', 'Q', 'Y', 'A', 'P', 'A', 'R', 'G', 'R', 'F', 'K', 'V', 'Y', 'L', 'I', 'D', 'E', 'V', 'H', 'M', 'L', 'S', 'R', 'H', 'S', 'F', 'N', 'A', 'L', 'L', 'K', 'T', 'L', 'E', 'E', 'P', 'P', 'E', 'H', 'V', 'K', 'F', 'L', 'L', 'A', 'T', 'T', 'D', 'P', 'Q', 'K', 'L', 'P', 'V', 'T', 'I', 'L', 'S', 'R', 'C', 'L', 'Q', 'F', 'H', 'L', 'K', 'A', 'L', 'D', 'V', 'E', 'Q', 'I', 'R', 'H', 'Q', 'L', 'E', 'H', 'I', 'L', 'N', 'E', 'E', 'H', 'I', 'A', 'H', 'E', 'P', 'R', 'A', 'L', 'Q', 'L', 'L', 'A', 'R', 'A', 'A', 'E', 'G', 'S', 'L', 'R', 'D', 'A', 'L', 'S', 'L', 'T', 'D', 'Q', 'A', 'I', 'A', 'S', 'G', 'D', 'G', 'Q', 'V', 'S', 'T', 'Q', 'A', 'V', 'S', 'A', 'M', 'L', 'G', 'T', 'V', 'L', 'A', 'R', 'K', 'W', 'R', 'P', 'Q', 'T', 'F', 'A', 'D', 'V', 'V', 'G', 'Q', 'E', 'H', 'V', 'L', 'T', 'A', 'L', 'A', 'N', 'G', 'L', 'S', 'L', 'G', 'R', 'I', 'H', 'H', 'A', 'Y', 'L', 'F', 'S', 'G', 'T', 'R', 'G', 'V', 'G', 'K', 'T', 'S', 'I', 'A', 'R', 'L', 'L', 'A', 'K', 'G', 'L', 'N', 'C', 'E', 'T', 'G', 'I', 'T', 'A', 'T', 'P', 'C', 'G', 'V', 'C', 'D', 'N', 'C', 'R', 'E', 'I', 'E', 'Q', 'G', 'R', 'F', 'V', 'D', 'L', 'I', 'E', 'I', 'D', 'A', 'A', 'S', 'R', 'T', 'K', 'V', 'E', 'D', 'T', 'R', 'D', 'L', 'L', 'D', 'N', 'V', 'Q', 'Y', 'A', 'P', 'A', 'R', 'G', 'R', 'F', 'K', 'V', 'Y', 'L', 'I', 'D', 'E', 'V', 'H', 'M', 'L', 'S', 'R', 'H', 'S', 'F', 'N', 'A', 'L', 'L', 'K', 'T', 'L', 'E', 'E', 'P', 'P', 'E', 'H', 'V', 'K', 'F', 'L', 'L', 'A', 'T', 'T', 'D', 'P', 'Q', 'K', 'L', 'P', 'V', 'T', 'I', 'L', 'S', 'R', 'C', 'L', 'Q', 'F', 'H', 'L', 'K', 'A', 'L', 'D', 'V', 'E', 'Q', 'I', 'R', 'H', 'Q', 'L', 'E', 'H', 'I', 'L', 'N', 'E', 'E', 'H', 'I', 'A', 'H', 'E', 'P', 'R', 'A', 'L', 'Q', 'L', 'L', 'A', 'R', 'A', 'A', 'E', 'G', 'S', 'L', 'R', 'D', 'A', 'L', 'S', 'L', 'T', 'D', 'Q', 'A', 'I', 'A', 'S', 'G', 'D', 'G', 'Q', 'V', 'S', 'T', 'Q', 'A', 'V', 'S', 'A', 'M', 'L', 'G', 'T']
 

Но я не уверен, как отформатировать, чтобы получить желаемый результат.

Ответ №1:

Я не на 100% уверен в том, что вы пытаетесь сделать, но следующее может дать вам некоторые идеи:

 indices = [1, 2, 10, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 72, 73, 74, 75, 76, 77, 93, 96, 97, 98, 99, 100, 101, 102, 103, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 159, 160, 162, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 195, 196, 197, 198, 199, 200, 201, 202, 203, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 220, 229, 230, 231, 232, 233, 234, 240, 241, 249, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 311, 312, 313, 314, 315, 316, 332, 335, 336, 337, 338, 339, 340, 341, 342, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 398, 399, 400, 401, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 434, 435, 436, 437, 438, 439, 440, 441, 442, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 468, 469, 470, 471, 472, 473]
aminos = ['Q', 'V', 'L', 'A', 'R', 'K', 'W', 'R', 'P', 'Q', 'T', 'F', 'A', 'D', 'V', 'V', 'G', 'Q', 'E', 'H', 'V', 'L', 'T', 'A', 'L', 'A', 'N', 'G', 'L', 'S', 'L', 'G', 'R', 'I', 'H', 'H', 'A', 'Y', 'L', 'F', 'S', 'G', 'T', 'R', 'G', 'V', 'G', 'K', 'T', 'S', 'I', 'A', 'R', 'L', 'L', 'A', 'K', 'G', 'L', 'N', 'C', 'E', 'T', 'G', 'I', 'T', 'A', 'T', 'P', 'C', 'G', 'V', 'C', 'D', 'N', 'C', 'R', 'E', 'I', 'E', 'Q', 'G', 'R', 'F', 'V', 'D', 'L', 'I', 'E', 'I', 'D', 'A', 'A', 'S', 'R', 'T', 'K', 'V', 'E', 'D', 'T', 'R', 'D', 'L', 'L', 'D', 'N', 'V', 'Q', 'Y', 'A', 'P', 'A', 'R', 'G', 'R', 'F', 'K', 'V', 'Y', 'L', 'I', 'D', 'E', 'V', 'H', 'M', 'L', 'S', 'R', 'H', 'S', 'F', 'N', 'A', 'L', 'L', 'K', 'T', 'L', 'E', 'E', 'P', 'P', 'E', 'H', 'V', 'K', 'F', 'L', 'L', 'A', 'T', 'T', 'D', 'P', 'Q', 'K', 'L', 'P', 'V', 'T', 'I', 'L', 'S', 'R', 'C', 'L', 'Q', 'F', 'H', 'L', 'K', 'A', 'L', 'D', 'V', 'E', 'Q', 'I', 'R', 'H', 'Q', 'L', 'E', 'H', 'I', 'L', 'N', 'E', 'E', 'H', 'I', 'A', 'H', 'E', 'P', 'R', 'A', 'L', 'Q', 'L', 'L', 'A', 'R', 'A', 'A', 'E', 'G', 'S', 'L', 'R', 'D', 'A', 'L', 'S', 'L', 'T', 'D', 'Q', 'A', 'I', 'A', 'S', 'G', 'D', 'G', 'Q', 'V', 'S', 'T', 'Q', 'A', 'V', 'S', 'A', 'M', 'L', 'G', 'T', 'V', 'L', 'A', 'R', 'K', 'W', 'R', 'P', 'Q', 'T', 'F', 'A', 'D', 'V', 'V', 'G', 'Q', 'E', 'H', 'V', 'L', 'T', 'A', 'L', 'A', 'N', 'G', 'L', 'S', 'L', 'G', 'R', 'I', 'H', 'H', 'A', 'Y', 'L', 'F', 'S', 'G', 'T', 'R', 'G', 'V', 'G', 'K', 'T', 'S', 'I', 'A', 'R', 'L', 'L', 'A', 'K', 'G', 'L', 'N', 'C', 'E', 'T', 'G', 'I', 'T', 'A', 'T', 'P', 'C', 'G', 'V', 'C', 'D', 'N', 'C', 'R', 'E', 'I', 'E', 'Q', 'G', 'R', 'F', 'V', 'D', 'L', 'I', 'E', 'I', 'D', 'A', 'A', 'S', 'R', 'T', 'K', 'V', 'E', 'D', 'T', 'R', 'D', 'L', 'L', 'D', 'N', 'V', 'Q', 'Y', 'A', 'P', 'A', 'R', 'G', 'R', 'F', 'K', 'V', 'Y', 'L', 'I', 'D', 'E', 'V', 'H', 'M', 'L', 'S', 'R', 'H', 'S', 'F', 'N', 'A', 'L', 'L', 'K', 'T', 'L', 'E', 'E', 'P', 'P', 'E', 'H', 'V', 'K', 'F', 'L', 'L', 'A', 'T', 'T', 'D', 'P', 'Q', 'K', 'L', 'P', 'V', 'T', 'I', 'L', 'S', 'R', 'C', 'L', 'Q', 'F', 'H', 'L', 'K', 'A', 'L', 'D', 'V', 'E', 'Q', 'I', 'R', 'H', 'Q', 'L', 'E', 'H', 'I', 'L', 'N', 'E', 'E', 'H', 'I', 'A', 'H', 'E', 'P', 'R', 'A', 'L', 'Q', 'L', 'L', 'A', 'R', 'A', 'A', 'E', 'G', 'S', 'L', 'R', 'D', 'A', 'L', 'S', 'L', 'T', 'D', 'Q', 'A', 'I', 'A', 'S', 'G', 'D', 'G', 'Q', 'V', 'S', 'T', 'Q', 'A', 'V', 'S', 'A', 'M', 'L', 'G', 'T']

line1 = ''.join('H' if i in set(indices) else '-' for i in range(1,1 len(aminos)))
line2 = ''.join(aminos)
print(line1)
print(line2)
 

Выход:

 HH-------H------HHHHHHHHHHH------------------HHHHHHHHHHH---------------HHHHHH---------------H--HHHHHHHH------------------------HHHHHHHHHHH--------------------HH-H------------HHHHHHHHHHHHH-------HHHHHHHHH-----HHHHHHHHHH-H--------HHHHHH-----HH-------H------HHHHHHHHHHH------------------HHHHHHHHHHH---------------HHHHHH---------------H--HHHHHHHH------------------------HHHHHHHHHH---------------------HHHH------------HHHHHHHHHHHHH-------HHHHHHHHH-----HHHHHHHHHHHHH-------HHHHHH------
QVLARKWRPQTFADVVGQEHVLTALANGLSLGRIHHAYLFSGTRGVGKTSIARLLAKGLNCETGITATPCGVCDNCREIEQGRFVDLIEIDAASRTKVEDTRDLLDNVQYAPARGRFKVYLIDEVHMLSRHSFNALLKTLEEPPEHVKFLLATTDPQKLPVTILSRCLQFHLKALDVEQIRHQLEHILNEEHIAHEPRALQLLARAAEGSLRDALSLTDQAIASGDGQVSTQAVSAMLGTVLARKWRPQTFADVVGQEHVLTALANGLSLGRIHHAYLFSGTRGVGKTSIARLLAKGLNCETGITATPCGVCDNCREIEQGRFVDLIEIDAASRTKVEDTRDLLDNVQYAPARGRFKVYLIDEVHMLSRHSFNALLKTLEEPPEHVKFLLATTDPQKLPVTILSRCLQFHLKALDVEQIRHQLEHILNEEHIAHEPRALQLLARAAEGSLRDALSLTDQAIASGDGQVSTQAVSAMLGT
 

Я предположил индексацию на основе 1, поскольку это, похоже, распространено в биоинформатике. Вы можете настроить, если индексирование основано на 0.