将 CSV 文件转换为 Lua 中定义键的表

2023-11-24

我正在学习 Lua 来构建飞行模拟器的脚本。

我有一个 CSV 文件,如下所示:

Poti city, Poti,red,-295731.42857144,617222.85714285  
Lanchhuti city, Poti,red,-299217.14285715,647851.42857142  
Ozurgeti city, Poti,red,-317217.14285715,648422.85714285  
Samtredia city, Poti,red,-287502.85714287,672022.85714285  
Abasha city, Poti,red,-284245.71428573,661108.57142857

每行包含 5 个字段 (city, region, coalition, coordinate-x and coordinate-y在模拟器坐标参考系中)。

我需要将此文件作为 lua 表读取,应如下所示:

citylist = {
           [1]
           {
              ["city"] = "Poti city",
              ["region"] = "Poti",
              ["coalition"] = "red",
              ["coordinate-x"] = -295731.42857144,
              ["coordinate-y"] = 617222.85714285,
           },
           [2]
           { ....... etcetc

}

我还必须对一些不同的 csv 文件执行此操作,并且我尝试从 luawiki 查找一些 CSV 函数,但老实说我不太了解。 您能否写下一个可以按预期解析 CSV 文件的代码示例?

PS:从来没有' " 'csv 文件中的字符。

编辑+添加

好的,答案 1 中的代码似乎可以工作,但似乎无法构建像上面这样的表。作为一个新手,我会尽力解释。

我尝试解析这段文字:

123,Poty city,Poti,red,-295731.42857144,617222.85714285
124,Lanchhuti city,Poti,red,-299217.14285715,647851.42857142
125,Ozurgeti city,Poti,red,-317217.14285715,648422.85714285
126,Samtredia city,Poti,red,-287502.85714287,672022.85714285

用这个代码:

do  
    local OLo = io.open(lfs.writedir() .. "Logs/" .. "Objectivelist.txt", "r")
    local Objectivelist = {}
    for line in io.lines(OLo) do
        local objID, objName, objRegion, objCoalition, objCoordx, objCoordy = line:match("%s*(.-),%s*(.-),%s*(.-),%s*(.-),%s*(.-),%s*(.-)")
        Objectivelist[#Objectivelist + 1] = { ["objID"] = objID, ["objName"] = objName, ["objRegion"] = objRegion, ["objCoalition"] = objCoalition, ["objCoordx"] = objCoordx, ["objCoordy"] = objCoordy }
    end
end

然后尝试使用以下代码重建一些不同的输出以进行调试:

do
    local fName = "DGWS-DEBUG-objectivelist.doc"
    local f = io.open(lfs.writedir() .. "Logs/" .. fName, "w")
    local debugOBJ = ""

    for ind, objData in pairs(Objectivelist) do
        debugOBJ = debugOBJ.. objData.objID .. "," .. objData.objName .. "," .. objData.objRegion .. "," .. objData.objCoalition .. "," .. objData.objCoordx .. "," .. objData.objCoordy .. "\n"
    end

    f:write(debugOBJ)

end 

好吧,它在“for ind, objData inpairs(Objectivelist) do”行中给出了错误,表示期望一个表并得到零。

我不明白错误在哪里:(,你能帮我吗?。

谢谢 :)

PS:我不知道匹配代码,但我会尝试学习如何在预期代码起作用后立即对值进行更严格的检查:)


您可以自行拆分 CSV 文件。读取文件并使用模式匹配获取每个字段,然后将字段存储到表中。

local citylist = {}
for line in io.lines("citys.csv") do
    local city, region, coalition, coordinate_x, coordinate_y = line:match("%s*(.-),%s*(.-),%s*(.-),%s*(.-),%s*(.-)")
    citylist[#citylist + 1] = { city = city, region = region, coalition = coalition, coordinate_x = coordinate_x, coordinate_y = coordinate_y }
end

在实际代码中,您可以使用更严格的模式。例如,检查坐标值是否确实是数字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 CSV 文件转换为 Lua 中定义键的表 的相关文章

  • 在 C 中解析字符串的最简单方法是什么?

    我必须在 C 中解析这个字符串 XFR 3 NS 207 46 106 118 1863 0 207 46 104 20 1863 r n 并且能够得到207 46 106 118部分和1863部分 第一个 IP 地址 我知道我可以一个字符
  • 为什么有 LR(0) 解析器而不是 LL(0) 解析器?

    我一直在维基百科上阅读这两个内容 并注意到虽然存在 LR 0 解析器 但不存在 LL 0 解析器之类的东西 根据我的阅读 我了解到 LL k LR k 中的 k 表示解析器可以看到多少个字符beyond当前正在处理的当前角色 所以我的问题是
  • 使用 boost::spirit::qi 解析键入的 csv 文件

    我想解析带有键入值的 CSV 文件 每列的类型在标题中定义 例如 int double double int unsigned 12 1 3 23445 1 42 45 46 47 48 49 结果数据结构可能类似于这个二维向量 using
  • 循环访问多个 CSV 文件并生成多个输出

    我正在编写一些 python 脚本 它打开 csv 文件 定义数据帧 运行一些分析 例如聚合数据 拆分列 查找平均值等 并将分析的输出绘制在图表上 输出将是一个图形 png 文件 和一个 csv 文件 并在原始文件名末尾添加单词 ANALY
  • 将 CSV 文件读取到嵌套对象

    我有 CSV 文件 例如 Title Column Value A Z1 1 A Z1 2 A Z1 3 A Z2 1 A Z2 5 B Z3 4 B Z3 6 我想将此 csv 文件读入以下类层次结构 我想最终得到一个列表MyClass
  • 是否有更快的方法来检查 LINQ to XML 中的 XML 元素并解析 bool?

    仅供参考 这与我的上一个问题非常相似 是否有更快的方法来检查 LINQ to XML 中的 XML 元素 https stackoverflow com questions 2065665 is there a faster way to
  • 用 C# 解析和查询 SOAP

    我正在尝试解析一个大量命名空间的 SOAP 消息 源也可以在here http tinyurl com n3av6k
  • fputcsv 和记事本

    我使用 fputcsv 生成 csv 文件 它工作得很好 但是当我在记事本 Windows 中查看 csv 文件时 没有新行 所有行都在 1 行中 并且在应该换行的地方有一个正方形 损坏的字符 例如 Mac 上的其他编辑器可以正确显示带有中
  • 如何使用 Torch7 进行预测

    我仍在熟悉 Torch 到目前为止一切顺利 然而 我遇到了一个死胡同 我不知道如何解决 如何让 Torch7 或更具体地说 dp 库 来评估单个输入并返回预测输出 这是我的设置 基本上是 dp 演示 require dp hyperpara
  • 创建一个 .rwl 对象

    我有一些树数据想要处理dplr包裹 我的问题是我只有 Excel 文件形式的数据 因此我将数据导出为 csv 然后将其输入 R 中 a lt read csv file 我需要将这些数据转换为 rwl能够运行一些dplr功能 我的猜测是我需
  • 解析 Google 表格中制表符分隔的文本文件

    我在网上有一个 txt 文件 其中包含制表符分隔值 TSV CSV 如下所示 产品IDtabColortabPricetabQuantity项目1tabRed tab 5 2 tab5项目2tabBlue tab 7 5 tab10 我使用
  • 在 Android 上解析查询字符串

    Java EE 有ServletRequest getParameterValues http java sun com j2ee sdk 1 3 techdocs api javax servlet ServletRequest html
  • 尝试解解析 json 字符串,但得到 Expected start of the object '{', but had 'EOF' 相反

    我正在尝试使用 kotlin 可序列化将 json 文件解析为列表 这是我的数据类 Serializable data class Book val epub String val fb2 String val mobi String va
  • CSV 提供的数据源第一列中存在奇数字符

    我有一个 CSV 文件 已添加到 Visual Studio 单元测试项目中 它有七列 如下所示 assessmentitemid reviewer1 reviewer2 reviewer3 reviewer4 reviewer5 revi
  • 如何在 Android Lollipop 中使用注释修复 Android Jackson 解析期间的 IncompleteClassChangeError?

    在我们的 Android 应用程序中 我们在模型中使用 Jackson Annotations JsonTypeInfo use JsonTypeInfo Id NAME include JsonTypeInfo As PROPERTY p
  • 使用 Meteor 中的 D3 访问 csv 文件

    我已经使用 D3 成功渲染了一个 HTML 表格 显示了 csv 文件中的数据 但是当我将相同的代码移入 Meteor 项目时 我遇到了问题 传递到 d3 csv 回调中的数据对象一次拾取 HTML 文件 1 行 而不是 csv 数据 仅当
  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • 在python中比较两个xml文件

    我是 python 编程新手 并且在理解这个概念时遇到了一些困难 我想比较两个 xml 文件 这些 xml 文件相当大 我将给出一个我想要比较的文件类型的示例 xml文件1
  • 使用 silverlight 4 和 c# 创建 CSV 下载

    我正在努力寻找示例或代码 以便能够在 silverlight 中创建 CSV 或文本文件作为可下载链接 我已经在 ASP net 中完成了此操作 但无法找到使用 Silverlight 的方法 我在旋转轮子吗 或者我应该创建一个 ASP 页
  • 有谁知道一种更快的方法来执行 String.Split() 吗?

    我正在读取 CSV 文件的每一行 并且需要获取每一列中的各个值 所以现在我只是使用 values line Split delimiter where line是保存由分隔符分隔的值的字符串 衡量我的表现ReadNextRow我注意到它花费

随机推荐

  • 虚拟/纯虚拟解释

    如果一个函数被定义为虚函数到底意味着什么 它与纯虚函数相同吗 From 维基百科的虚函数 在面向对象编程中 在 C 和 Object Pascal 等语言中 虚函数或虚方法是可继承且可重写的函数或方法 便于动态分派 这个概念是面向对象编程
  • JavaFX 的 Spinner 在空文本输入上引发 NullPointerException

    我有一个问题 可编辑的 JavaFX 8Spinner导致未捕获NullPointerException如果清除编辑器文本并提交 然后单击递增或递减按钮 这是j8u60 j8u77 如果运气好的话 递增 递减按钮将卡在按下状态 NPE 会继
  • 如何在 Xcode 4 中打开内存浏览器?

    在 Xcode 3 中调试程序时 我经常在单独的窗口中使用内存浏览器来查看缓冲区更改的内容 同时单步执行代码行 当我现在开始使用 Xcode 4 时 我想知道如何打开内存浏览器 我在用户界面中找不到类似的东西 有人可以提供帮助吗 调试时选择
  • Android 10 无法注册 Sensor.TYPE_STEP_COUNTER

    我目前正在开发一个应用程序来跟踪步骤 为了跟踪步骤 我使用手机的以下传感器 传感器 TYPE STEP COUNTER 这对于我测试过的所有设备都运行良好 最近我有机会在三星 S10 设备上测试该应用程序 但它不再跟踪步骤 而它在三星 S9
  • HTML5 视频:可以在视频上放置常规 html 内容

    只是想知道是否有人知道让常规 html 内容 主要是 img 标签 显示在视频顶部 通过 video 标签 的技巧 正如其他人所暗示的 将 HTML 元素放置在VIDEO使用绝对定位的元素 当您尝试在 iPhone iPod 和可能较旧的
  • 如何在 Visual Studio 中提取默认控件模板?

    我想知道如何使用 Visual Studio 提取 获取副本 给定控件的默认模板 我知道这可以使用 Expression Blend 来完成 右键单击控件 编辑模板 gt 编辑副本 然后将默认控件模板复制到我的 Xaml 中 但这可以用 V
  • POST 和 PUT 的不同模型要求

    假设我有一个控制器CatController包括 GET POST 和 PUT 操作 他们都使用相同的Cat资源可能如下所示 public class CatDto public int Id get set Required public
  • 为什么 hazelcast 的默认分区数为 271?选择分区数的参数是什么?

    我刚刚浏览了 hazelcast 文档 它表明数据跨所有节点进行分区 默认情况下在集群 271 中创建的分区数 哪些参数控制正确分区计数值的选择 为什么默认分区数是 271 271 是质数 给定任何键 Hazelcast 都会对键进行哈希处
  • Jenkins:开始构建时发送电子邮件通知

    在 Jenkins 中 有没有办法在开始构建时发送邮件 我知道有一个构建后电子邮件通知 它会在构建成功或失败后向给定收件人发送邮件 同样 我期待类似预构建通知之类的东西 还有一个条件电子邮件 例如 if username null 发送至
  • 我的智能手机每秒可以执行多少次 FFT? (用于执行语音识别)

    我正在探索语音识别和 DSP 因此我想在我的智能手机上实现一个简单的声音频率分析仪 我有一部 iPhone 和一部运行 Android 的三星 Nexus S 我以前在Matlab中做过基本的DSP 根据我的理解 我需要执行 FFT 来获取
  • 如何使用 UWP MarkupExtension 类?

    Fall Creators 更新 SDK 添加了标记扩展类 非常棒 https learn microsoft com en us uwp api windows ui xaml markup markupextension 所以我创建了一
  • 创建交互式应用程序原型的最佳方法是什么?

    这个问题应该从一般的角度来解释 而不是仅仅针对网络应用程序或桌面应用程序 我一直在寻找一种简单易用的方法来为 Web 应用程序创建交互式原型 我想使用一种技术 允许简单的 UI 创建 特别是在进一步迭代中重新创建和修改 UI 用模型数据填充
  • android:TimePickerDialog 阻止用户选择过去的时间,并可以选择具有新日期的未来时间

    我正在使用这个链接Android TimePickerDialog 设置最大时间 我是安卓新手 借助此代码 我无法选择过去的时间 但我们无法选择未来的时间 当在时间选择器对话框模式中选择 12 时 根据第二天而不是过去的一天自动更改为 am
  • AngularJS:扩展输入指令

    我想知道是否可以扩展 Angular 的输入指令 我想将一些侦听器附加到页面上的所有输入字段 我认为你可以用以下方式装饰现有模块 provide decorate 但我不知道如何使用指令 更准确地说是输入指令 来做到这一点 那么 有人能把我
  • 如何将wav文件转换为浮动幅度

    所以我问了标题中的所有内容 我有一个 wav 文件 由 PyAudio 从输入音频编写 我想将其转换为与声级 振幅 相对应的浮点数据 以进行一些傅里叶变换等 有人有将 WAV 数据转换为 float 的想法吗 我已经找到了两种不错的方法来做
  • Java中的字符串和字符数组

    我是一名刚从C 转向Java的学生 在 Java 中 为 String 和 Char 数组定义单独的数据类型的主要原因是什么 两者有什么区别 由于我只学过C 到目前为止我的印象是它们是同一件事 如果可能的话请澄清 String是不可变的 C
  • 加载和存储是唯一需要重新排序的指令吗?

    我读过很多关于内存排序的文章 它们都只说 CPU 重新排序加载和存储 CPU 我对 x86 CPU 特别感兴趣 是否只重新排序加载和存储 而不重新排序它拥有的其余指令 乱序执行保留了按程序顺序运行的错觉对于单线程 核心 这就像C C as
  • 停止服务内的线程

    我在服务中有一个线程 我希望能够在按下时停止该线程buttonStop在我的主要活动课上 在我的主要活动课上 我有 public class MainActivity extends Activity implements OnClickL
  • C++中通过引用传递指针

    我有一个函数 将迭代器传递给 char 缓冲区 这也是一个 char 该函数需要递增迭代器 无论如何 我发现将迭代器传递到函数中的一个好方法是通过引用传递指针 bool myFunction unsigned char iter 但是 我听
  • 将 CSV 文件转换为 Lua 中定义键的表

    我正在学习 Lua 来构建飞行模拟器的脚本 我有一个 CSV 文件 如下所示 Poti city Poti red 295731 42857144 617222 85714285 Lanchhuti city Poti red 299217