0

「AAAAAA-AAACAAA-AAAAAA」をクエリ

参照「AA-AATAAAAAAATAAAAAA」

Python では、クエリ内のダッシュが参照文字に置き換えられ、参照文字列内のダッシュが対応するクエリ文字の削除につながる参照文字列に関連する文字列 (クエリ) を修復するにはどうすればよいですか?

「AAAAAA-AAACAAA-AAAAAA」になるはずです

"AAAATAAACAAATAAAAAA" (ここの括弧 "AA()AA(T)AAACAAA(T)AAAAAA" は変更された文字を強調表示します)

以下は、参照に関連するクエリのダッシュを修復できるコードです。これは、役立つ場合とそうでない場合があります(行番号はファイルに固有のものであり、ここでは関係ありません。Python 以外のコードをお詫びします!)参照のダッシュによるクエリ....

    if "Query identifier" in line:
        Query = line[24:-12]

        if "-" in Query:
            indices = [i for i, x in enumerate(Query) if x == "-"]
            QueryStringUntilFirstDash = Query[:indices[0]]
            found = 2

    if found ==2 and "Reference identifier" in line:
        Ref = line[24:-12]

        if len(indices) == 1:
            QueryDashToEnd.append(Query[indices[0]+1:])
            print QueryStringUntilFirstDash+Ref[indices[0]]+str(QueryDashToEnd[0])
            del(A[:])

        else:

            while y < len(indices):
                    y+=1

                    if y < len(indices):

                        DashesMiddleofQuery.append(Query[indices[y-1]:indices[y]])

                        DashesMiddleofQuerySubstitution = [B.replace('-', Ref[indices[y-1]]) for B in B]

                        Concat= ''.join(B)

            del(B[:])
            print UID
            print Beg+str(Concat)+Query[indices[-1]+1:]+">1"
            found = 0
            y = 0
4

1 に答える 1

2

IIUC、このようなものがうまくいくかもしれません:

>>> query = "AAAAA-AAACAAA-AAAAAA"
>>> ref = "AA-AATAAAAAAATAAAAAA"
>>> fixed = ''.join(r if q == '-' else '' if r == '-' else q
...     for q,r in zip(query, ref))
>>> 
>>> fixed
'AAAATAAACAAATAAAAAA'

または、ロジックを関数にプッシュする場合:

>>> def fixer(q,r):
...     if q == '-':
...         return r
...     if r == '-':
...         return ''
...     return q
... 
>>> fixed = ''.join(map(fixer, query, ref))
>>> fixed
'AAAATAAACAAATAAAAAA'

インデックスではなく、文字のペアとそれを直接どうするかという観点で考えた方が簡単だと思います。

于 2013-07-14T02:02:27.937 に答える