0

私がやろうとしているのは、あるファイルから文字列への行を読み取り、その文字列を含む行を別のファイルで検索し、その行を.split().

私のコードは次のようになります。

for line in portslist:
    marker = line.split()
    printername = marker[0]
    address = marker[1]

    for lines in constantfile:
        if address in line: #if the desired address is in the line
            lineholder = line
            lineholder = lineholder.split()
            oldonline = lineholder[4]
            oldutc = lineholder[5]
            status = lineholder[2]

ただし、エラーが発生します

in readermain oldonline=lineholder[4] IndexError: list index out of range

トラブルシューティングを行った後、定数ファイルの行が行に割り当てられていないようです。代わりに、ファイル ポートリストの行が行に割り当てられているように見えますが、この行のインデックスは 2 つしかありません。

私の質問は、文字列"address"が行に割り当てられている行を作成して、解析して使用できるようにする方法です。

4

2 に答える 2

3

私はあなたが使用lineすべき場所を使用していると思いますlines:

for lines in constantfile:
    if address in lines: #if the desired address is in the line
        lineholder=lines.split()
        # etc.

また、constantfileがファイル オブジェクトの場合、そのイテレータは、外側のforループの最初のパスの後に使い果たされます。

于 2012-08-30T21:08:09.970 に答える
0

インデントにより、「行内のアドレス」が false と評価された場合でも、残りのブロックが実行されるようになります。

次に、constantfile の行を変数「lines」に割り当てる必要があります。対応するコードを

if address in lines:
    lineholder = lines
    ...

そしてあなたは良いはずです。

さらに、2 つの異なるファイルの行を扱っていることを明確にする、あまり恣意的な命名規則をお勧めします。例えば

  • ライン -> ポートライン
  • マーカー -> ポートライン分割
  • 行 -> constline
  • ラインホルダー -> constlinesplit

そうすれば、混乱が少なくなり、コードが読みやすくなります。

于 2012-08-30T21:13:29.183 に答える