Как мне добиться этого цикла в Lua без внешних библиотек - PullRequest
0 голосов
/ 22 мая 2018

Я новичок в Луа, так что будь добр со мной.У меня есть 2 строки CSV в Lua

a= '1,2,3,4,5'

представляет индекс и

b='this,needs,to,be,matched:with,every,single,row,here:'

Строки разделены символом ':' вместо новой строки

Ожидаемый результат

1,this,2,needs,3,to,4,be,5,matched
1,with,2,every,3,single,4,row,5,here

Я попытался выполнить их по отдельности, используя следующий код

local result= {}
local u = unpack or table.unpack
for values in string.gmatch(values_csv, '([^:]+)') do
    local data = {}
    for column1,column2 in string.gmatch(values, '([^,]+)'),string.gmatch(keys, '([^,]+)') do
        print(column1, column2)
    end
end

По какой-то причине второй всегда равен нулю.Я не могу найти функцию zip, похожую на Python в Lua без внешних библиотек.Как мне повторить и то и другое одновременно.Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вариант решения Егора, чтобы получить результат, как вы просили:

a = '1,2,3,4,5'
b = 'this,needs,to,be,matched:with,every,single,row,here:'

for line in b:gmatch '[^:]+' do
  local idx = a:gmatch '%d+'
  local ans = {}
  for v in line:gmatch '[^,]+' do
    ans[#ans+1] = idx()
    ans[#ans+1] = v
  end
  print(table.concat(ans,','))
end
0 голосов
/ 22 мая 2018
local keys = '1,2,3,4,5'
local values_csv = 'this,needs,to,be,matched:with,every,single,row,here:some,values,,are,absent:'

for values in values_csv:gmatch'[^:]+' do
   local data = {}
   local keys_iter = keys:gmatch'[^,]+'
   for value_column in (values..','):gmatch'([^,]*),' do
      print(keys_iter(), value_column)
   end
end
...