file.csv,其中存储了n个矩阵。例如,
A B C
A 0 3 4
B 5 0 7
C 7 8 0
A B C D
A 0 3 4 5
B 5 0 7 9
C 7 8 0 5
D 7 8 6 0
所有矩阵都用空白行分隔。
我想将每个单独的矩阵分成一个单独的文件(1.csv,2.csv ... n.csv)。请帮我。谢谢。
答案 0 :(得分:0)
这是一种可能性。仅数据部分保存在CSV中。如果需要标题,则需要在save_csv()中添加一些代码。 data
字符串中的示例数据。您可以通过将data
加载到所需的任何文件来对其进行初始化。
data = [[
A B C
A 0 3 4
B 5 0 7
C 7 8 0
A B C D
A 0 3 4 5
B 5 0 7 9
C 7 8 0 5
D 7 8 6 0
]]
--------------------------------------------------------------------------------
local cc = table.concat
--------------------------------------------------------------------------------
function save_csv(filenumber,t)
io.open(filenumber .. '.csv','w'):write(cc(t,'\n')):close()
end
--------------------------------------------------------------------------------
local filenumber = 1
local ans = {}
for line in (data..'\n'):gmatch '(.-)\n' do
local s = {}
for item in line:gmatch '%d+' do s[#s+1] = item end
if #s > 0 then
ans[#ans+1] = cc(s,',')
elseif #ans > 0 then
save_csv(filenumber,ans)
filenumber = filenumber + 1
ans = {}
end
end
答案 1 :(得分:0)
因此,这应该完全可以满足您的要求。
又快又脏
-- read lines
local files, data = {}
for line in io.lines('file.csv') do
if (line == '') then
if data then table.insert(files, data) end
data = nil
else
data = (data and (data .. '\n') or '') .. line
end
end
-- last file
if data then table.insert(files, data) end
-- write files
for i = 1, #files do
local f = io.open(i .. '.csv', 'w')
f:write(files[i])
io.close(f)
end