2012-02-17 50 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