2016-06-29 8 views
-1

私はこのコードを書こうとしているので、何らかの理由で出力が常に空白になっています、 手伝って頂けますか?プログラムは変数lに1つの文字を入れl = f.readline()[brk + 2]ラインで文字を指定した後の位置でファイル内の複数のシーケンスを見つける

import readline 
count = 0 
brk = 0 
with open("file.txt") as f: 
    while (count < 35): 
     l = f.readline()[brk + 2] 
     sp = raw_input ("Starting Position:") 
     sp = int(sp) 
     rl = sp + 6 
     print(l[sp:rl]) 
     print(l[-30:0]) 
     count = count + 1 
     brk = brk + 2 

    print ("Done") 
+0

ファイルに35個のサンプルデータがあるので、それは私には35回の位置を尋ねます。はい、ファイルが存在しない場合は、それは、おそらくそれは、印刷よりも、それを記録しなければならないことを報告することはできませんと言うでしょうが、その1つを試みたが、仕事をしなかった。 – Lindy

+0

だから、あなたは "出力は常に空白です"と書いたのですが、それは間違っていましたか?それは役に立ちません!回答が必要な場合は、その質問に真実を記入してください。 – Ilya

+0

あなたがそれを実行すると、まずファイル内の2行目の改行に進み、 "Starting Position"と尋ねられます.1444番目の文字が表示され、1444-1450と-30単位の間のシーケンスが出力されます。空白であり、toループよりも、次のサンプルデータがあるところの第4の改行から「Starting Position」を尋ねます。 70行の改行までは、ファイル内のサンプル数であるため「完了」と表示されます。我々は良い? – Lindy

答えて

0

。したがって、l(行print(l[sp:rl])print(l[-30:0]))の部分文字列を印刷しようとすると、空行が印刷されます。期待される結果です。

これを見つけるには、lの割り当ての直後にprint lを追加するだけです。

ファイルの2行目、4行目、6行目などを読み込もうとしているようです。これを行うには、このような何かを行うことができます。

brk = 0 
with open("file.txt") as f: 
    f.readline() 
    f.readline() #skip both first lines 
    while (count < 35): 
     l = f.readline() 
     f.readline() #skip next line 
     sp = raw_input ("Starting Position:") 
     sp = int(sp) 
     rl = sp + 6 
     print(l[sp:rl]) 
     print(l[-30:0]) 
     count = count + 1 
     brk = brk + 2 

print(l[-30:0])は常に空行を印刷する必要があります。 print(l[-30:])(文字列の最後の30文字は l)が必要です。

+1

'end <= start'でスライスを作成すると空の文字列が生成されるため、' l [-30:0] 'は' l'の長さに関係なく常に空白になります。おそらく 'print(l [-30:])'が必要です。 – nelfin

+1

申し訳ありませんが、 'end <= start'はあまり明確ではありません。つまり、' end'が* startの前またはそれ以上のスライスが空の文字列を生成するということです。 *インデックス0より前のものは何もないので、このスライスは常に空です。 – nelfin

+0

@nelfinありがとう、私はこの答えを拡張しました。 – Ilya

関連する問題