1

それで、別の投稿で尋ねた宿題がありますが、あまり詳細ではなかったので、自分のせいで探していた答えが得られませんでした. 私がする必要があるのは、ファイルの各行が特定のカテゴリに関連する構造化テキスト ファイルを開くことです。カテゴリと順序は変わりませんが、繰り返される回数は変わる可能性があります。私の仕事は、(最初の 2 行を無視して) 各行を取得し、その行に XML タグを追加することです。これを行うために、カテゴリの文字列名のリストを作成しました。私が抱えている問題は、ファイル内のテキスト行と同じ速度でカテゴリのリストを反復処理する方法がわからないことです。

例えば:

私のテキストファイルが次の場合:

peas
carrots
broccoli
beans

そして私のリストは

tagList=["apples","oranges","bananas","pears"]

それから私は得続けます:

<apples>peas</apples>
<oranges>peas</oranges>
<bananas>peas</bananas>
<pears>peas</pears>
<apples>carrots</apples>
<oranges>carrots</oranges>
<bananas>carrots</bananas>
<pears>carrots</pears>
ect....

ただの代わりに

<apples>peas</apples>
<oranges>carrots</oranges>
<bananas>broccoli</bananas>
<pears>beans</pears>

入れ子になった for ループが必要だという印象を受けているので、このようなものがあります。

for line in file:
    for x in tagList:
        outputFile.write("<"+x+">"+line+"</"+x+">\n")

物事がこのようになっている理由を正確に理解していますが、それを修正する方法に戸惑っています。2 つのリストを同じ速度で反復することに関する他の投稿を見つけましたが、ファイル内の行とリストを同じ速度で反復することについては何も見つからないようです。どんな助けでも大歓迎です。ありがとう!!!

4

3 に答える 3

1

宿題への回答に関するポリシーがここにあるのかどうかはわかりませんが、役立つ場合に備えて、コードが何をしているのかを説明します。

コーディングしたとおりに動作しています。

for ループをネストしました (ファイル内の tagList)。

したがって、基本的に行っているのはファイルを通過することであり、4 つのアイテムがある場合、各ポイント (1-4) で tagList (4 つのアイテムがある) を再びループします。

したがって、最初のステップで (ファイルから) エンドウ豆を取得しましたが、それを出力する前に、別の for ループ (tagList) に入り、そこで「エンドウ豆」を出力します。

次に、2 番目の for ループがさらに 3 回繰り返され、合計 4 つの「豆」が得られます。その反復が完了すると、最初の for ループに戻り、今度はニンジンを出力する次の要素に移動します。

あなたがここで何をしているのかを説明してくれることを願っています。

于 2012-12-03T02:56:06.480 に答える
0
    python 3.2
    list comprehension

    >>> [["<"+v+">"+i+"</"+v+">"] for i in st for v in tag]
于 2012-12-03T14:06:02.560 に答える