dump方法打印表格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dump方法打印表格相关的知识,希望对你有一定的参考价值。

在多人合作项目中偶尔会遇到这样的情况:
现在在调试程序,从其他小伙伴提供的方法中取到的table类型数据报错了,此时我们想检查一下数据格式。但是直接print又无法打印出来这个table的结构,真机测试时又不太方便在Lua中打断点,用for循环来输出又不能展开所有子table(有个dump工具该多好)。
所以,如果想解决上面的问题,将整个table类型数据的结构输出到控制台,那就使用循环+递归的方式来输出数据吧。
下面直接贴上代码以及测试用例:
感谢老司机Reyn在评论中提出的建议
--[[
print_dump是一个用于调试输出数据的函数,能够打印出nil,boolean,number,string,table类型的数据,以及table类型值的元表
参数data表示要输出的数据
参数showMetatable表示是否要输出元表
参数lastCount用于格式控制,用户请勿使用该变量
]]
function print_dump(data, showMetatable, lastCount)
if type(data) ~= "table" then
--Value
if type(data) == "string" then
io.write("\"", data, "\"")
else
io.write(tostring(data))
end
else
--Format
local count = lastCount or 0
count = count + 1
io.write("\n")
--Metatable
if showMetatable then
for i = 1,count do io.write("\t") end
local mt = getmetatable(data)
io.write("\"__metatable\" = ")
print_dump(mt, showMetatable, count) -- 如果不想看到元表的元表,可将showMetatable处填nil
io.write(",\n") --如果不想在元表后加逗号,可以删除这里的逗号
end
--Key
for key,value in pairs(data) do
for i = 1,count do io.write("\t") end
if type(key) == "string" then
io.write("\"", key, "\" = ")
elseif type(key) == "number" then
io.write("[", key, "] = ")
else
io.write(tostring(key))
end
print_dump(value, showMetatable, count) -- 如果不想看到子table的元表,可将showMetatable处填nil
io.write(",\n") --如果不想在table的每一个item后加逗号,可以删除这里的逗号
end
--Format
for i = 1,lastCount or 0 do io.write("\t") end
io.write("")
end
--Format
if not lastCount then
io.write("\n")
end
end
下面分别输出了nil,boolean,number,string,table类型的数据,测试代码如下:
print("---------------Test---------------")
local myData = nil
print_dump(myData)
print("-------------------")
myData = true
print_dump(myData)
print("-------------------")
myData = 10086
print_dump(myData)
print("-------------------")
myData = "your name"
print_dump(myData)
print("-------------------")
myData =
null = nil,
bool = true,
num = 20,
str = "abc",
subTab = "111", "222",
func = print_dump,
sunTab = "sun_a", "sun_1", "sun_2", you = "god", i = "man"

local mt =
mt.__add = function(op1, op2) return 1000 end
mt.__index = 1,2
setmetatable(myData, mt)
print_dump(myData, 1) -- 第二个参数不为空则打印元表
print("---------------End---------------")
dump输出的结果是这样的(因为内容太长,屏幕高度不够,所以分成了两张图):
上半部分输出.jpeg
下半部分输出.jpeg
如果不是有特殊需求,建议按照注释的提示,屏蔽子级table类型值的元表。屏蔽子级table类型值的元表之后输出看起来清爽很多。
屏蔽子级table的元表后的输出.jpeg
总结:
其实解决问题不难,需求是成长的直接动力。
其实为了dump输出图上的效果,我还是花了一些时间去做微调。最初末尾是没有换行的,也就是End那一行会紧接着上一行输出,虽然table的结构可以正常看到,但是如果dump的不是一个table,那就看着很奇怪了。时间总是花在细节上。
参考技术A 非常感谢您的提问。关于Python中的dump方法打印表格,我可以为您提供以下解释:
dump方法是Python中json模块中的一个方法,用于将Python对象转换为JSON格式的字符串并输出到文件中。在输出JSON格式的字符串时,可以使用indent参数来指定缩进的空格数,从而使输出的JSON字符串更加易读。
如果您想要打印表格,可以使用Python中的pandas库。pandas库提供了DataFrame对象,可以方便地处理和操作表格数据。您可以将表格数据转换为DataFrame对象,然后使用to_json方法将其转换为JSON格式的字符串,最后使用dump方法将其输出到文件中。
另外,如果您想要在Jupyter Notebook中打印表格,可以使用pandas库的display方法。该方法可以直接在Notebook中显示DataFrame对象,而不需要将其转换为JSON格式的字符串。
总之,Python中有很多方法可以打印表格,具体方法取决于您的需求和使用场景。如果您有任何其他问题或需要进一步的帮助,请随时告诉我,我会尽力为您提供帮助。
参考技术B 打印表格的方法:
1、打开Excel 电子表格 ,可以直接文件打印,最好先设置一下打印区域;
2、文件打印;
3、在这里选择已经设置好的打印机;
4、在设置里面,可以选择 打印的范围,打印活动工作表,打印整个簿,或者打印选定区域。当需要仅仅打印一个工作表,就选择打印活动工作表,当需要打印整个工作簿里的所有工作表里,具选择打印整个簿,当仅仅只需要一个工作表里某一个区域时,可以选择打印选定区域;
5、里面还有其他设置 ,纸张方向,纸张大小,自定义边距 ,无缩放,可以自行设置;
6、打印,填好打印的份数就可以。
参考技术C php打印单个数据,php打印表格
青霖 2022年12月07日 03:00 10 0
PHP里面怎么输出数据?
您好,PHP输出数据有四种方式,echo、var_dump、print_r、retrun(这个一般是PHP框架常用)

PHP如何将数据库表中的某列数据一个一个循环取出并打印
一般我们为了减少数据库链接,取数据是一次取出所有想要的数据然后做循环处理,而不是一个个循环取出

$servername = "localhost";

$username = "root";

$password = "root";

$dbname = "aaaa";

// 创建连接

$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection

if ($conn-connect_error)

die("连接失败: " . $conn-connect_error);



$conn-query('set names utf8');

$sql = "SELECT name FROM xiao ";//这里是查询xiao表的name列的所有数据

$result = $conn-query($sql);

if ($result-num_rows 0)

// 输出数据

while($row = $result-fetch_assoc())

//print_r($row);

echo "name: " . $row["name"]."br";//这里是循环打印



else

echo "没有查询到数据";



$conn-close();

PHP如何输出数据库的每条数据
// 这是因为你从资源型结果集中获取数据时只获取了一次, 如果查询为多条数据应该迭代资源型结果集

$r = mysql_query($sql); // 你的结果集

$result = [];

while (true)

$ary = mysql_fetch_assoc($r); // 取出第一条数据, 数据指针向后移动一位

if ($ary)

$result[] = $ary; // 存储到结果数组中

else

break; // 如果取出的结果为false, 则代表数据获取完毕, 终止循环





echo 'pre';

print_r($result); // 打印最终结果

echo '/pre';

php怎么输出数据库中的一个数据
一、首先你需要在 $result=mysql_query($sql); 这一行之后取一下数据: $row = mysql_fetch_array($result); 具体原因请看我以前回答过的问题:/question/142246646 二、之后查看获取到的数据: 1 查看具体值: echo $rphp怎么输出数据库中的一个数据

2.php如何打印一个对象或数组到桌面上
php打印一个对象或数组到到桌面上:

1、打印数组使用print_r ( $array/$var )

print 是打印的意思,而r则取自Array的单词,那么该函数的功能就是打印数组内容,它既可以打印数组内容,也可以打印普通的变量。

print_r ($_REQUEST) ;

print_r ($_GET) ; /* 打印使用GET方法传递的表单内容*/

print_r($_POST) ; /* 打印使用表单POST方法传递过的数组内容*/

2、打印对象使用var_dump ($object/$array/$var)

var 代表变量(Variable),变量包括对象、数组以及标量变量,dump有倒出之意,加在一块,就是将变量或对象的内容全部输出出来。

var_dump($DB) ; /*打印$DB数据库连接对象的内容*/

var_dump($fileHandle) ; /*打印文件句柄对象的内容*/

var_dump($Smarty) ; /*打印Smarty模板对象*/
参考技术D 在 Python 中,如果想要使用 dump 方法打印表格,您可以使用 Pandas 库中的 DataFrame 数据结构来实现。具体的步骤如下:

1. 首先,使用 Pandas 库中的 DataFrame() 函数来创建一个数据框,其中包含您要打印的数据。例如:

```
import pandas as pd

data = 'Name': ['Tom', 'Jack', 'Steve', 'Ricky'],
'Age': [28, 34, 29, 42],
'Country': ['US', 'Canada', 'UK', 'Mexico']

df = pd.DataFrame(data)
```

在这个例子中,我们创建了一个名为 df 的数据框,并填充了三列数据:人名、年龄和国家。

2. 接着,您可以使用 dump 方法打印数据框,例如:

```
print(df.to_string(index=False))
```

这个代码会将数据框转换为字符串格式,并输出到终端中。 to_string() 方法中的 index=False 参数是为了去掉行索引,以使表格更加干净。

当然,您也可以将输出的字符串保存到文件中,例如:

```
with open('output.txt', 'w') as f:
f.write(df.to_string(index=False))
```

这样会将表格保存到名为 output.txt 的文件中。

希望这些信息能对您有所帮助!

打印对象的属性,如 json.dumps 打印一个字典 [重复]

【中文标题】打印对象的属性,如 json.dumps 打印一个字典 [重复]【英文标题】:Print an object's attributes like json.dumps prints a dict [duplicate] 【发布时间】:2016-03-14 16:53:31 【问题描述】:

编辑:这个答案中有一个解决方案:How to use a dot “.” to access members of dictionary?

使用字典时:

d = dict()
d['param1'] = 17
d['param2'] = 3

使用print json.dumps(d) 可以轻松打印。使用对象/类时:

class z: 
    pass
z.param1 = 17
z.param2 = 3

我无法打印 z 的所有属性,print json.dumps(z)print z 都没有。怎么做?


旁注但很重要:为什么我要使用类/对象来存储参数,而使用 dict 是合乎逻辑的?因为z.param1z['param1']写起来更短更方便,尤其是我的(法语)关键字[]'写得很长,因为ALT+GR+5(比如说2秒而不是 0.5,但是当你有一个包含许多变量的长代码时,这真的很重要)

【问题讨论】:

***.com/questions/192109/… @Anil 或其他:是否有一个简短的技巧(通过子类化dict)来访问带有d.param1 而不是d['param1'] 的字典? 这是您要找的吗? ***.com/a/23689767/2652580 【参考方案1】:

您可以简单地在类实例上使用__dict__ 来获取dict 对象形式的属性:

>>> z.__dict__
>>> 'param1': 17, '__module__': '__main__', 'param2': 3, '__doc__': None

但是,如果您需要删除 __xxx__ 内置方法,那么您可能需要在类中指定 __str__ 方法。

【讨论】:

你能举一个例子来说明你对__str__的看法吗? 你的预期输出是什么? 这个输出,@ZdaR:'param1': 17, 'param2': 3

以上是关于dump方法打印表格的主要内容,如果未能解决你的问题,请参考以下文章

Excel表格从指定部分重新分页打印的两种方法

14.16通过SqlDataRead方法和SqlDataSet方法 打印表格

excel怎么让表格居中

怎样用java打印表格

使用循环的方法,编写程序打印9到N的表格[重复]

Excel表格太大,无法同时打印在一张纸上?一键帮你轻松搞定!