удаление строки с правильным отступом в python

#python #arrays #string

#python #массивы #строка

Вопрос:

ВВОД:

 $target: ENSG00000097007|ABL1
length: 3075
miRNA : hsa-miR-203
length: 22

mfe: -30.5 kcal/mol
p-value: 0.606919

position:  2745
target 5'   C             G     C 3'
             GUGGUCCUGGACA   CAC    
             CACCAGGAUUUGU   GUG    
miRNA  3' GAU             AAA     5'
  

Я должен удалить последние две строки, а затем назначить им два массива и прочитать каждый символ и получить вывод, как показано ниже,

После удаления строка должна быть в формате :

    CACCAGGAUUUGU   GUG    
GAU             AAA     
  

и если символ строки считывается из строки1, то он должен быть напечатан в нижнем регистре, а если из второй строки, то он должен быть в верхнем регистре

конечный результат программы должен быть «GAUcaccaggauuuguAAAgug»

код, с помощью которого мы пытались его прочитать, не разделял строки в идеальном выравнивании, как видно на входе

вот код, который мы использовали:

  import fileinput
 import sys
 from sys import argv
 script, filename = argv
 file = open(filename)
 og1 = "AGUUCCUUUGUUUUGGUGACUG"
 pattern = "              "
 pattern1 = "miRNA  3'"
 file = open(filename)
 for line in file:
    if line.startswith(pattern):
        n = file.next()
        # print n[9:],#  bound mirna
        for i in range(0, len(og1)):
            print og1[i],
        print "n" 
        for j in range(0,len(n)):
            print n[j],'
  

еще дополнительный ввод для решения проблемы

 target: ENSG00000142208|ENST00000349310|AKT1
length: 992
miRNA : hsa-miR-125b-5p
length: 22

mfe: -23.9 kcal/mol
p-value: 0.610132

position  168
target 5' C     C               A 3'
           CGCAG   GGGGU   AGGGA    
           GUGUU   UCCCA   UCCCU    
miRNA  3' A     CAA     GAG       5'


target: ENSG00000142208|ENST00000349310|AKT1
length: 992
miRNA : hsa-miR-149-3p
length: 21

mfe: -36.6 kcal/mol
p-value: 0.598318

position  798
target 5' C   UGUC     AGG        G 3'
           CGC    GCCCC   CCCUCCCU    
           GUG    CGGGG   GGGAGGGA    
miRNA  3' C   U        GCA          5'


target: ENSG00000142208|ENST00000349310|AKT1
length: 992
miRNA : hsa-miR-185-5p
length: 22

mfe: -27.8 kcal/mol
p-value: 0.606550

position  733
target 5' C       CUCCC   CAGAUGA        C 3'
           CGGGAGC     CCU       UCUCUCCA    
           GUCCUUG     GGA       AGAGAGGU    
miRNA  3' A       AC      A                5'


target: ENSG00000142208|ENST00000349310|AKT1
length: 992
miRNA : hsa-miR-199a-3p
length: 22

mfe: -21.9 kcal/mol
p-value: 0.611970

position  357
target 5' C      CC   CCU      U    C 3'
           AGCCAG   GC   GGGCUG CUGU    
           UUGGUU   CG   UCUGAU GACA    
miRNA  3' A      ACA                  5'


target: ENSG00000142208|ENST00000349310|AKT1
length: 992
miRNA : hsa-miR-451a
length: 21

mfe: -21.2 kcal/mol
p-value: 0.612523

position  416
target 5' C      UCAACC       A     3'
           CUCAGU      UGGUGGC        
           GAGUCA      ACCAUUG        
miRNA  3' U      UU           CCAAA 5'
  

Ответ №1:

 file = open(filename)                                          
for segment in file.read().split("nntarget"):                          
    interested_lines = segment.split('n')[-3:-1]  #Fetch last two lines 
    split1 = interested_lines[0].split()                                 
    split2 = interested_lines[1].split()[2:-1]                           
    for i in range(0,len(split1)<len(split2)):                           
        split1.append("")                                                

    req = ""                                                             
    for i in range(0,len(split2)):                                       
        req  = split2[i] split1[i].lower()                               
    for j in range(i 1,len(split1)):                                     
        req  = split1[j]                                                 
    print req
  

вывод

 AguguuCAAucccaGAGucccu
CgugUcggggGCAgggaggga
AguccuugACggaAagagaggu
AuugguuACAcgUCUGAUGACA
UgagucaUUaccauugCCAAA
  

Комментарии:

1. Можете ли вы объяснить мне, что именно означает эта строка print split2[0] split1[0].lower() split2[1] split1[1].lower() Я новичок в python, не могу получить код

2. И я хочу сказать, что входные данные не будут одинаковыми для всех.. Как и в другом случае, ввод совершенно другой . Итак, мне нужно знать, как печатать, например, если он читается из первой строки, это означает, что он в нижнем регистре, а если из второй строки, это означает, что это верхний регистр, и в конечном выводе в одном файле, как указано выше @Ashoka Lella

3. @ramko, функция split() разбивает строку на основе пробелов. Для предпоследней строки split1 = [«CACCAGGAUUUGU»,»GUG»]. Для последней строки split2 = [«miRNA», «3′», «GAU», «AAA», «5′»].

4. @ramko, если бы ты мог вставить больше содержимого своего входного файла. Я могу обобщить код дальше

5. добавили сами входные данные, о которых идет речь.

Ответ №2:

Я бы разделил на строки, взял последние две, затем перебрал обе строки, сжатые вместе, и использовал символ, который не является a " " !

 def combinebases(base_data):
    lines = base_data.splitlines()[-2:]
    output = list()
    lines[0] = lines[0].lower()
    for ch1, ch2 in zip(*lines):
        output.append(max(ch1, ch2))
    return ''.join(output[10:-4])
  

Возможно, более безопасным результатом было бы вернуть:

     return re.search("(?<=miRNA  3' )[augc] ", ''.join(output), re.I).group()
  

Однако регулярное выражение является излишним, если все ваши базовые длины одинаковы.

Приводит к:

 >>> txt = """$target: ENSG00000097007|ABL1
length: 3075
miRNA : hsa-miR-203
length: 22

mfe: -30.5 kcal/mol
p-value: 0.606919

position:  2745
target 5'   C             G     C 3'
             GUGGUCCUGGACA   CAC    
             CACCAGGAUUUGU   GUG    
miRNA  3' GAU             AAA     5'"""

>>> combinebases(txt)
'GAUcaccaggauuuguAAAgug'