2017-10-03 11 views
0

長さ42のBeautifulSoupでDICTを作成しました。タグからテキストを抽出しようとしていますが、最後に空白があることがわかりました。私はプレーヤー[42]を入力すると、それはREPLから空白を返しますが、私は私が手にループでそれを呼び出したときの.text:Python - DICTをループしてTraceBackエラーを取得する

Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
    File "/Users/Brad/anaconda/lib/python3.6/site-packages/bs4/element.py", line 997, in __getitem__ 
    return self.attrs[key] 
KeyError: 0 

コード:

for player in players: 
    name = player[0].text.strip() 
    print(name) 

を私はすべてのGoogle上で見てきましたStackoverflowといくつかのifステートメントを試してみましたが、まだ運がない。

答えて

2

ザ・ループを反復するためのアイテムの上にplayersplayerに順番に各項目を割り当てる:あなたが行うことができますのでplayerは、すでに単数オブジェクトです。 player[0]でインデックスを作成しようとすると、BeautifulSoupは属性名0を使用してそれを属性検索として扱います。プレーヤータグに0という名前の属性がないため、検索に失敗し、KeyErrorが生成されます。

for player in players: 
    name = player.text.strip() 
    print(name) 
+0

説明の詳細をありがとう。私はそれがいくつかの異なる方法を説明したとき、本当に私の理解に役立ちます。 –

1

インデックスを指定する必要はありません。

name = player.text.strip() 
print(name) 
+0

ありがとう:

次のようなループはず!それは完璧に働いた。ヘルプをよろしくお願いいたします。 –

+0

編集のおかげで@Coldspeed、それに私を打つ –

関連する問題