2017-06-11 8 views
1

私は現在、A、B、A、Bの代わりにA、A、B、Bの出力を得ています。ループでPython配列をマージしますか?

各テーブルのヘッダーの値を各テーブルのデータ要素(辞書など)に関連付けることが本当に必要です。

import requests 
from bs4 import BeautifulSoup 

courseCode = "IFB104" 
page = requests.get("https://www.qut.edu.au/study/unit?unitCode=" +  courseCode) 

soup = BeautifulSoup(page.content, 'html.parser') 
table = soup.find_all(class_='table assessment-item') 

numOfTables = 0 
tableDataArray = [] 

for tbl in table: 
    numOfTables = numOfTables + 1 
    tableDataArray += [tbl.find_all('th'),tbl.find_all('td')] 
+0

テーブルの外観と希望する出力の例を挙げることができますか? –

+0

現在は​​#3 [、]を成果 '3 [[名、説明、重み付け、期限、内部または外部、グループまたは個々の、は学習に関し、印刷します:クイズ/テスト、​​週間のクイズ毎週講義では、技術的な問題を解決するために使用される計算原理を紹介します。これらのテクニックの理解は、毎週のオンラインクイズとテストによってテストされます。、​​25 & percnt;学期、​​内部、​​個々を通して、​​、​​1,2] 'はこの表からタグの全てを印刷 – yeeeeee

+0

(全体のHTMLページの表3のいずれか)、およびその後の全て​​タグ)。私は各をそれぞれ​​に関連づける辞書(元々は配列だが、辞書は良い)を作りたいと思う。そうすれば、私は評価の名前を呼んで "#3:クイズ/テスト"を返すか、計量して "25%"を得ることができます。 – yeeeeee

答えて

1

私が正しく理解している場合は、リストの代わりに、辞書を使用する必要があります。

import requests 
from bs4 import BeautifulSoup 

courseCode = "IFB104" 
page = requests.get("https://www.qut.edu.au/study/unit?unitCode=" + courseCode) 

soup = BeautifulSoup(page.content, 'html.parser') 
table = soup.find_all(class_='table assessment-item') 

numOfTables = 0 
tableFormatted1 = [] 
tableFormatted2 = {} 

for tbl in table: 
    numOfTables = numOfTables + 1 
    keys = tbl.find_all('th') 
    values = tbl.find_all('td') 
    new_data = dict(zip(keys, values)) 

    # Method 1 
    tableFormatted1.append(new_data) 

    # Method 2 
    for k, v in new_data.items(): 
     if k in tableFormatted2: 
      tableFormatted2[k].append(v) 
     else: 
      tableFormatted2[k] = [v] 

print('List of dictionaries') 
print(tableFormatted1) 
print('') 

print('Dictionary with list') 
print(tableFormatted2) 

編集:

tblの各反復はすでに行わ反復を上書きしています。したがって、構造を変更する必要があります。私はちょうど2つの方法を提供しました。

+0

ほぼ完璧!私は、3つのテーブル全てに対して、1つではなく、それを行う必要があることを認識したことを除いて。私の元の投稿には、 '+ ='の代わりに 'tableDataArray = ...'と入力したときに間違いがありました。 3つのテーブルを反復することになっています.... 、​​レベルでそれを分解します。 – yeeeeee

+0

ちょうど編集。 – Rafael

+0

しかし問題があります。キーは同じです( 'name'は' Portfolio'、 'Examination(written)'、 'Quiz/Test')。すべての値のリストを持つキーが必要ですか? – Rafael

関連する問題