Lua - 如何修改 .csv 文件的第一行?
2021-2-5 9:22:46
收藏:0
阅读:172
评论:2
我有一个系统生成的 feed.csv 文件,其中有通用的列标题,例如下面...
created_at entry_id field1 field2 field3 field4 field5 field6 field7 field8
2021-02-03 06:47:02 UTC 2614 18 19.1 18 20 16.7 15.8 6.7 10.00
2021-02-03 07:17:02 UTC 2615 18 19 18 20 16.6 15.7 6.6 10.00
2021-02-03 07:47:02 UTC 2616 18 19 18 20 16.5 15.6 6.5 9.90
使用 Lua,我该如何将第一行更改为以下内容?
created_at entry_id front_room bed_1 bed_2 kitchen outside bathroom shed porch
我有一个起点的想法,但不确定接下来要做什么?
local tempfile = io.open(mnt/nas/feed.csv, "r") -- 读取 .csv 文件的文件路径
local lines = {}
local lineCt = 1
for line in tempfile:lines() do
if(lineCt == 1) then
????
点赞
用户6676439
感谢 @darkwiiplayer 的帮助,我使用以下代码完成了我需要做的事情:
local hFile = io.open("mnt/nas/feed.csv", "r") -- 读取文件
local field_names = { "conservatory", "kitchen", "hallway", "living_toom", "front_room", "lean_to", "outside", "cabin" } -- 字段名称数组
local function ModifyLine(header)
-- 替换所有的 "fieldXX" 字符串
return header:gsub("field%d+", function(field)
-- 从 "fieldXX" 字符串中提取数字
local num = tonumber(field:match("%d+"))
-- 查找正确的名称并返回
return field_names[num]
end)
end
local lines = {}
local restOfFile
local lineCt = 1
for line in hFile:lines() do
if(lineCt == 1) then -- 修改该行
lines[#lines + 1] = ModifyLine(line) -- 将旧行更改为新行。
restOfFile = hFile:read("*a")
break
else
lineCt = lineCt + 1
lines[#lines + 1] = line
end
end
hFile:close()
hFile = io.open("mnt/nas/feed.csv", "w") -- 写入更改后的文件
for i, line in ipairs(lines) do
hFile:write(line, "\n")
end
hFile:write(restOfFile)
hFile:close()
2021-02-06 19:57:58
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

local tempfile = io.open(mnt/nas/feed.csv, "r") -- 要读取的 .csv 文件。 local field_names = { "front_room", "bed_2", "bed_2", "等等..." } local function replace_fields(header) -- 替换掉所有 "fieldXX" 字符串 return header:gsub("field%d+", function(field) -- 从 "fieldXX" 字符串中提取数字 local num = tonumber(field:match("%d+")) -- 查找正确的名称并返回 return field_names[num] end) end local header = tempfile:read() -- 筛选 header 并对其执行某些操作 do_something_with(replace_fields(header)) -- 现在遍历剩余的行并以原样使用它们 for line in tempfile:lines() do do_something_with(line) end使用协程,你可以很容易地构建一个迭代器,该迭代器筛选第一行,然后返回不经修改的其余部分,如果你想要多次重复使用这种代码。