Pregunta

Es necesario cargar el archivo a variables de Lua.

Digamos que tengo

name address email

Hay un espacio entre cada uno. Necesito el archivo de texto que tiene x-muchas de estas líneas en que se va a cargar en una especie de objeto - o al menos la de una línea será cortada a matriz de cadenas divididas por espacios

.

Es este tipo de trabajo posible en Lua y cómo debería hacerlo? Soy bastante nuevo en Lua, pero no pude encontrar nada relevante en Internet.

¿Fue útil?

Solución

Para ampliar la respuesta de 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

Sin embargo, esto no cubre el caso de que sus nombres no tienen espacios en ellos.

Otros consejos

Cuando se desea leer sobre Lua patrones , que son parte de la cadena biblioteca . Aquí está una función de ejemplo (no probado):

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

Esta función simplemente agarra tres subseries compuestos de caracteres no-espacio (%S). Una función real tendría que comprobar algún error para asegurarse de que el patrón coincide realidad.

Si usted tiene control sobre el formato del archivo de entrada, que será mejor de almacenar los datos en formato de Lua como se describe aquí .

Si no es así, utilice el io biblioteca para abrir el archivo y luego usar el biblioteca de cadenas como:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top