1

私は多くの関連する質問を見つけました.少なくとも私がここまでたどり着くのに役立ったいくつかの質問. 私の目標は、文字列と任意の数の整数を受け取る関数を持つことです。引数で指定されたポイントにスペースが挿入された文字列を返す関数が必要です。この関数は、さまざまな数の挿入と挿入位置を持つさまざまな文字列で使用します。

これは私が作りたいものの例です:

'ATGCATGCATGCATGC' のような文字列とインデックス (例: 4、7) を入力します。出力は「ATGCA TGC ATGCATGC」である必要があります。

これは、これまでで最も近い結果をもたらした関数です。

def breakRNA(seqRNA, *breakPoint):
    n = 0
    for i in seqRNA:
        n += 1
        for i in breakPoint:
            if i == n:
                seqRNA = seqRNA[n:] + ' ' + seqRNA[:n]
    return seqRNA     

ただし、戻り文字列は順不同で転置されます。例:

>>> test = breakRNA('AAAAAAAAAAAAAAAAAAAAAAAAAAATTTTTGGGGGGGGCCCCCCCCCC', 5, 8, 14)
>>> test
>>> 'TTTTTGGGGGGGGCCCCCCCCCC AAAAA AAAAAAAA AAAAAAAAAAAAAA'

私は初日初心者なので、アドバイスをいただければ幸いです。ありがとうございました。

4

4 に答える 4

5

文字列は、Python のリストのようにインデックス付けされます。たとえば、次のことを考慮してください。

test_string = "azertyuiop"
print test_string[0] #will return 'a'
print test_string[0:2] #will return 'az'

だからあなたの問題に戻ります:

def insert_space(string, integer):
    return string[0:integer] + ' ' + string[integer:]
于 2013-02-22T11:02:04.263 に答える
2

これがあなたが探しているものであることを願っています

def breakRNA(seqRNA, *breakPoint):
    seqRNAList = []
    noOfBreakPoints = len(breakPoint)
    for breakPt in range(noOfBreakPoints):
        for index in breakPoint:
            seqRNAList.append(seqRNA[:index])
            seqRNA = seqRNA[index:]
        break
    return seqRNAList

test = breakRNA('AAAAAAAAAAAAAAAAAAAAAAAAAAATTTTTGGGGGGGGCCCCCCCCCC', 5, 8, 14)
print test

これにより連想リストが返され、結合関数を使用してそこから文字列を作成できます。

于 2013-02-22T11:13:53.543 に答える