Luaの中の表のような変数のソートにテキストファイルをロードするには?
質問
私は、Luaの変数のにファイルをロードする必要があります。
のは、私が得たとしましょう。
name address email
それぞれの間にスペースがあります。私は、x-多く、その中にこのような行のオブジェクトのいくつかの種類にロードされることを持っているテキストファイルを必要とする - あるいは少なくとも1行は、スペースで割った文字列の配列にカットされなければならない。
。Luaの中で可能な仕事のこの種であり、私はこれをどのようにしたらよいでしょうか?私はLuaのにはかなり新しいですが、私は、インターネット上の関連する何かを見つけることができませんでした。
解決
urocの答えに展開します:
local file = io.open("filename.txt")
if file then
for line in file:lines() do
local name, address, email = unpack(line:split(" ")) --unpack turns a table like the one given (if you use the recommended version) into a bunch of separate variables
--do something with that data
end
else
end
--you'll need a split method, i recommend the python-like version at http://lua-users.org/wiki/SplitJoin
--not providing here because of possible license issues
しかし、これはあなたの名前がそれらにスペースを持っているケースをカバーしています。
他のヒント
あなたは Luaののパターンのに、一部であるかについて読みたいです文字列ライブラリにします。ここでは例として機能(テストされていませんが)です。
function read_addresses(filename)
local database = { }
for l in io.lines(filename) do
local n, a, e = l:match '(%S+)%s+(%S+)%s+(%S+)'
table.insert(database, { name = n, address = a, email = e })
end
return database
end
この関数は、単に空白以外(%S
)文字で構成された3つの部分文字列をつかみます。実際の機能は、いくつかのエラーは、パターンが実際に一致することを確認するチェックしていると思います。
あなたが入力ファイルの形式を制御している場合は、あなたが説明するようにLuaの形式でデータを格納したほうが良いでしょう。<のhref =「http://www.lua.org/pil/12.html」のrel = "nofollowをnoreferrer">ここを。
ない場合は、、ファイルを開き、使用する IOライブラリに使用文字列ライブラリは好きます:
local f = io.open("foo.txt")
while 1 do
local l = f:read()
if not l then break end
print(l) -- use the string library to split the string
end
所属していません StackOverflow