Luaの中の表のような変数のソートにテキストファイルをロードするには?

StackOverflow https://stackoverflow.com/questions/1891473

  •  19-09-2019
  •  | 
  •  

質問

私は、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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top