11

ディクショナリの値セクションに、アイテムの名前とプロパティの値を追加しています。

value+=child.get('name') + '\t' + child.text + '\t' 

各テキストはタブで区切られています。そのため、後でこの値の文字列を処理するときに、タブを分割し、for ループでリストを反復処理します。

for ループで名前と値の両方にアクセスするにはどうすればよいですか。各プロパティについては、名前と値を一度に取得してファイルに書き込みたいと思います。現在、リストは次のようになっています。

[a,b,a,b,a,b,a,b]

そして、それぞれのa、bについて私は書きたい:

'<' タグ名=a '>' b '<' /タグ '>'

4

3 に答える 3

20

ステップ サイズ 2 でリストを反復処理し、反復ごとに名前とタグを取得できます...

for i in range(0,len(list1),2):
    name = list1[i]
    tag = list1[i+1]
    print '<tag name="%s">%s</tag>' % (name, tag)
于 2012-08-01T17:02:04.903 に答える
4

まず、string += string2 を使用するのは、毎回新しい文字列にコピーされるため、悪い考えです。

value+=child.get('name') + '\t' + child.text + '\t'

する必要があります

values = ((child.get('name'),child.text) for child in children)

次に、印刷するときに、単に

for name,text in values:
    print '<tag name="{name}">{text}</tag>'.format(name=name,text=text)

何らかの理由で本当にタブが必要な場合は、値コンストラクターを (ジェネレーターから) リストに変更して、次のようにする必要があります。

''.join((name+'\t'+value+'\t' for name,value in values))[:-1]
于 2012-08-01T17:07:41.223 に答える
4

編集:キーが一意で、順序が重要でない場合...

リストを辞書に変換してから、辞書のキーを反復処理する必要があると思います。

# assuming you converted your list to a dictionary called values

for k in values:
   print '<tag name="%s">%s</tag>' % (k, values[k])

編集:結果を印刷する以外に辞書が必要ない場合は、投稿された他の回答がおそらくより良い方法です。

于 2012-08-01T17:02:20.900 に答える