2012-02-17 48 views
1

我是來自網站的數據挖掘信息,我必須做的一件事情是將頁面給我的信息更改爲另一條信息,並將第二條信息變成一個變量。然而,我根本無法想出辦法做到這一點。Lua:從以前設置的變量創建一個表格

給出如下表所示:

t = {big = "tall", little = "short", fat = "wide", skinny = "thin"} 

...我怎樣才能使它所以當我這樣做:

adj = string.match(page,'Adjective: (%w+)') 

...和它匹配big,我可以返回的值tall但把它變成一張桌子?我嘗試過使用一種功能,但這種功能不起作用,我不想做類似t[adj]={}的事情,因爲我不想製作t的子表。

我覺得它正在盯着我,但我正在畫一片空白。

編輯澄清:

我知道如何獲得我需要的形容詞,或者如何顯示大等的價值是什麼,我說的是這樣做的能力:

  1. 根據找到的形容詞找到值。在這種情況下,找到了big,值爲tall
  2. 取出找到的值(在此例中爲tall),並將該值轉換爲其自己的表格。然後我會從上面看到桌子,還有一個沒有填充的新桌子,叫做tall。這樣,我填充信息後,我可以通過tall["somekeyvalue"]

這樣做有點現在嗎?

+0

什麼做你的意思是「把它變成一張桌子」?你可以把它放在一個表中,只需將調用string.match放在'{}'中即可。 – jpjacobs 2012-02-17 08:39:48

回答

1

如果你不與全局變量困擾,您可以使用全局environement表。

讓你的值(由T [調整])後,你可以創建你的表是這樣的:

_G[t[adj]] = {} 

您可以再訪問表高大到處

+0

這正是我所期待的!非常感謝! – Josh 2012-02-17 22:33:19

1

這聽起來對我來說,當你匹配一個形容詞,你想看看它在你的表並返回你在那裏已經有了任何別名。

做,在Lua中,你會使用[]來查找表:

t = {big = "tall", little = "short", fat = "wide", skinny = "thin"} 
adj = string.match(page,'Adjective: (%w+)') 
print(t[adj]) 

如果匹配「的形容詞:大」在page,它將打印tall。這是你想要的嗎? 「把它變成一張桌子」這部分讓我感到困惑。

0

因爲我不知道如何創建在Lua動態變量,我可以建議你創建一個表,這將是你創造這樣你就可以參考這樣的「result.tall使用其他表的容器「這將成爲您添加到其中的元素的表格。

看看這個例子:

-- you have to initialize it 
result = {} 
result.tall = {} 
result.little = {} 

--insert the elements that can be another tables or not 
table.insert (result.tall, 'enormous') 
table.insert (result.little , {s = 'short'}) 

-- so you can access it later 
for k,v in pairs(result.tall) do 
    print(k,v) 
end