lua中表示Python repr的等效代码

在 Lua 中有 Python 的 repr() 函数的等价函数吗?换句话说,是否存在一种函数,可以显示非可打印字符,并使用 \x(其中 x 是 n 或 b 等),或者 \000 代码(如果不是 Lua 字符串转义字符)。我已经使用谷歌搜索,但找不到任何东西。有很多关于将非可打印字符放入字符串中的信息,但没有关于生成带有非可打印字符的字符串的可打印版本的信息。

点赞
用户142162
用户142162

最接近的等价物将会是 string.format%q 选项。

q 选项将字符串格式化为双引号内的形式,并在必要时使用转义序列以确保它可以被 Lua 解释器安全地读取。例如,调用

 string.format('%q', 'a string with "quotes" and \n new line')

可能会生成以下字符串:

"a string with \"quotes\" and \
  new line"

你会注意到,换行符并不会转换为字符对 \n。如果你想要这样做,请尝试以下函数:

function repr(str)
    return string.format("%q", str):gsub("\\\n", "\\n")
end
2014-02-08 19:06:51