如何使用Lua逐行将文件内容导入数组?

2026-06-05 08:485阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计589个文字,预计阅读时间需要3分钟。

如何使用Lua逐行将文件内容导入数组?

对不起,我在理解您的请求时遇到了一些困难。您似乎想要我将一段文本进行简化改写,不超过100字,并且直接输出结果。以下是简化后的内容:

我不会逐行读取文件中的数据,因为文件points.txt的示例数据如下:lexxo:30:1rey:40:2lion:40:2prince:50:3royal:50:3。这导致我得到的只是2维数组(表)。

请注意,这个简化版本尽量保持了原文的意思,同时控制了字数。

对不起,我还在学习lua.你可以纠正我,为什么文件中的数据不会逐行读取?

这是我在文件points.txt中的示例数据:

lexxo:30:1 rey:40:2 lion:40:2 prince:50:3 royal:50:3

所以当我从上面得到的是2d阵列(表)

如何使用Lua逐行将文件内容导入数组?

player = {{(name),(points),(which var point earned on index)}, {(...),(...),(...)}};

所以问题是,当我尝试循环打印文件中的所有数据.它只打印最新的一行.所以我想要打印所有这些

line_points = {} player_data = {{}} local rfile = io.open("points.txt", "r") for line in rfile:lines() do playername, playerpoint, playeridpoint = line:match("^(.-):(%d+):(%d+)$") player_data = {{playername, playerpoint, playeridpoint}} line_points[#line_points + 1] = player_data end for i = 1, #player_data do player_checkname = player_data[i][1] -- Get Player Name From Array for checking further player_checkpnt = player_data[i][3] -- Get Player ID Point From Array for checking further print(i..". Name: "..player_data[i][1].." Point: ".. player_data[i][2] .. " ID: " .. player_data[i][3]); end player_data总是有索引1,因为你没有向它添加项目,你将它们添加到line_points,其中#line_points是5,所以请改用它.

那是你想要的吗?

line_points = {} player_data = {{}} --I think you can delete it at all... --Because it is rewriting each time. local rfile = io.open("points.txt", "r") for line in rfile:lines() do playername, playerpoint, playeridpoint = line:match("^(.-):(%d+):(%d+)$") player_data = {playername, playerpoint, playeridpoint} --I also remover double table here ^^^^^^^^^^^^^^^^^^^ line_points[#line_points + 1] = player_data end --Here i checked counts --print('#pd='..#player_data) --print('#lp='..#line_points) --After it i decided to use line_points instead of player_data for i = 1, #line_points do player_checkname = line_points[i][1] -- Get Player Name From Array for checking further player_checkpnt = line_points[i][3] -- Get Player ID Point From Array for checking further print(i..". Name: "..line_points[i][1].." Point: ".. line_points[i][2] .. " ID: " .. line_points[i][3]); end

输出:

1. Name: lexxo Point: 30 ID: 1 2. Name: rey Point: 40 ID: 2 3. Name: lion Point: 40 ID: 2 4. Name: prince Point: 50 ID: 3 5. Name: royal Point: 50 ID: 3

更新:

在第一个循环中将player_data assignemnt更改为单个表后,它的计数总是为3.

本文共计589个文字,预计阅读时间需要3分钟。

如何使用Lua逐行将文件内容导入数组?

对不起,我在理解您的请求时遇到了一些困难。您似乎想要我将一段文本进行简化改写,不超过100字,并且直接输出结果。以下是简化后的内容:

我不会逐行读取文件中的数据,因为文件points.txt的示例数据如下:lexxo:30:1rey:40:2lion:40:2prince:50:3royal:50:3。这导致我得到的只是2维数组(表)。

请注意,这个简化版本尽量保持了原文的意思,同时控制了字数。

对不起,我还在学习lua.你可以纠正我,为什么文件中的数据不会逐行读取?

这是我在文件points.txt中的示例数据:

lexxo:30:1 rey:40:2 lion:40:2 prince:50:3 royal:50:3

所以当我从上面得到的是2d阵列(表)

如何使用Lua逐行将文件内容导入数组?

player = {{(name),(points),(which var point earned on index)}, {(...),(...),(...)}};

所以问题是,当我尝试循环打印文件中的所有数据.它只打印最新的一行.所以我想要打印所有这些

line_points = {} player_data = {{}} local rfile = io.open("points.txt", "r") for line in rfile:lines() do playername, playerpoint, playeridpoint = line:match("^(.-):(%d+):(%d+)$") player_data = {{playername, playerpoint, playeridpoint}} line_points[#line_points + 1] = player_data end for i = 1, #player_data do player_checkname = player_data[i][1] -- Get Player Name From Array for checking further player_checkpnt = player_data[i][3] -- Get Player ID Point From Array for checking further print(i..". Name: "..player_data[i][1].." Point: ".. player_data[i][2] .. " ID: " .. player_data[i][3]); end player_data总是有索引1,因为你没有向它添加项目,你将它们添加到line_points,其中#line_points是5,所以请改用它.

那是你想要的吗?

line_points = {} player_data = {{}} --I think you can delete it at all... --Because it is rewriting each time. local rfile = io.open("points.txt", "r") for line in rfile:lines() do playername, playerpoint, playeridpoint = line:match("^(.-):(%d+):(%d+)$") player_data = {playername, playerpoint, playeridpoint} --I also remover double table here ^^^^^^^^^^^^^^^^^^^ line_points[#line_points + 1] = player_data end --Here i checked counts --print('#pd='..#player_data) --print('#lp='..#line_points) --After it i decided to use line_points instead of player_data for i = 1, #line_points do player_checkname = line_points[i][1] -- Get Player Name From Array for checking further player_checkpnt = line_points[i][3] -- Get Player ID Point From Array for checking further print(i..". Name: "..line_points[i][1].." Point: ".. line_points[i][2] .. " ID: " .. line_points[i][3]); end

输出:

1. Name: lexxo Point: 30 ID: 1 2. Name: rey Point: 40 ID: 2 3. Name: lion Point: 40 ID: 2 4. Name: prince Point: 50 ID: 3 5. Name: royal Point: 50 ID: 3

更新:

在第一个循环中将player_data assignemnt更改为单个表后,它的计数总是为3.