0

私はこのような番号のリストを持っています:

146、168

174、196

230、252

258、280

286、308

314、336

342、364

370、392

最初の数値はコードから取得した値(開始番号)を表し、コンマの後の行の2番目の数値は終了値です。私がやろうとしているのは、開始値と終了値の両方を使用して文字列を出力することです。これが私のコードの一部です:

root = etree.parse(f)

for lcn in root.xpath("/protein/match[@dbname='DB']/lcn"):
    start = lcn.get("start")
    end = lcn.get("end")
    print "%s, %s" % (start, end,)
    if start <= end:
        start = int(start+1)
        print start    
    if start <= end:

      print list(start)

      start = int(start+1)

'str'オブジェクトと'int'オブジェクトを連結できないというエラーメッセージが表示されました。補足:リストのインデックスにはアルファベットが1つ含まれています。したがって、私の目標は、開始値と終了値ごとに1行にそれらの文字を印刷することです。たとえば、ACTGAGCAGで、場合によっては別の出力ファイルにインポートします。これを手伝ってくれませんか。

更新:すべてがうまくいったので、結果が得られましたが、今はそれらを1行に表示したいと思います。私はこれを行いましたが、TypeError:'builtin_function_or_method'オブジェクトはサブスクリプト可能ではないというエラーメッセージが表示されました

    while start <= end:
        inRange = makeList.append[start]
        start += 1
        print inRange
4

1 に答える 1

4

それ以外の

start = lcn.get("start")
end = lcn.get("end")

使用する

start = int(lcn.get("start"))
end = int(lcn.get("end"))

これはlcn.get、文字列を返すためです。

の代わりにstart = int(start+1)、を使用しますstart += 1。整数に変換する必要がなくなり、のstart += 1省略形になりstart = start + 1ます。

の代わりにprint "%s, %s" % (start, end,)、を使用しますprint "%d, %d" % (start, end)。末尾のコンマは不要でありstartend整数になっているため、%dの代わりに使用して%sください。

アップデート:

そして代わりに

while start <= end:
    inRange = makeList.append[start]
    start += 1
    print inRange

使用する

for i in range(start, end):
    makeList.append(i)
    print(i)

Python 3を使用している場合、または

for i in xrange(start, end):
    makeList.append(i)
    print i

Python2を使用している場合。

于 2012-07-06T17:59:00.610 に答える