2010-05-05 47 views
0

情況:獲得不可預知的數據轉換成表格形式

每一頁我湊了<input>元素與title=value=

我不知道什麼是要在頁面上。

我想將所有收集到的數據放在最後一個表格中,併爲每個標題添加一列。所以基本上,我需要每一行數據與所有其他數據排成一行,如果一行沒有某個​​元素,那麼它應該是空白的(但是必須有一些東西保持對齊) 。

例如。

第一頁:{animal: cat, colour: blue, fruit: lemon, day: monday}

第二頁有:{animal: fish, colour: green, day: saturday}

第三頁有:{animal: dog, number: 10, colour: yellow, fruit: mango, day: tuesday}

然後我得到的表應該是:

animal | number | colour | fruit | day 
cat | none | blue | lemon | monday 
fish | none | green | none | saturday 
dog | 10  | yellow | mango | tuesday 

雖然這將是很好的保持訂單titlevalue對,我知道字典不會這樣做。

所以基本上,我需要生成列所有titles(保持秩序,但不知何故合併在一起)

會是什麼要對這個不知道所有可能的冠軍,並明確指定訂單的最佳途徑爲了將價值放入?

回答

2

您需要一個多通道算法。記住列表中所有被刮掉的頁面。在第一遍中,查看該列表並收集set()中的所有標題,並創建一個排序(例如,按照字母順序將它們轉換爲列表)。

在第二遍中,您打印表格並使用您生成的排序作爲列名稱,根據需要從字典中提取值(缺省爲空以處理缺失的值),例如使用dict.get(name,「」 )。

+0

啊太棒了,設置聲音真的很有用。雖然此方法不會保留頁面上出現「title/value」對的順序。你怎麼能做到這一點? – Acorn 2010-05-05 10:50:45

+1

你可以看看這裏的答案:http://stackoverflow.com/questions/1653970/does-python-have-an-ordered-set實現有序集合。另外,從Python 2.7/3.1開始,標準庫中有一個OrderedDict:http://docs.python.org/dev/library/collections.html#ordereddict-objects – miles82 2010-05-05 11:14:58

+0

我讀過。值是否在每個頁面中以相同的順序出現?即使如此,重建訂單也很困難。您必須在訂單(或有序集)的基礎上保留一個額外的清單,並根據其周圍的密鑰確定插入新密鑰的位置。 – wump 2010-05-05 12:05:37

0

我建議你可以使用可選的參數,或者使用重載的構造函數來填充值:

Page(string animal = string.empty, 
int number = -999, string colour = string.empty, day = string.empty) 

要麼或者存儲每個鍵/值對的對象類型,然後從您的網頁丟。

+0

這將需要知道什麼可能會出現在頁面上,雖然不是嗎? – Acorn 2010-05-05 10:37:10